ดัชนี
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(ข้อความ)OptimizeToursLongRunningMetadata(ข้อความ)OptimizeToursRequest(ข้อความ)OptimizeToursRequest.SearchMode(enum)OptimizeToursRequest.SolvingMode(enum)OptimizeToursResponse(ข้อความ)OptimizeToursResponse.Metrics(ข้อความ)OptimizeToursUriMetadata(ข้อความ)OptimizeToursUriRequest(ข้อความ)OptimizeToursUriResponse(ข้อความ)OptimizeToursValidationError(ข้อความ)OptimizeToursValidationError.FieldReference(ข้อความ)OutputConfig(ข้อความ)RouteModifiers(ข้อความ)Shipment(ข้อความ)Shipment.Load(ข้อความ)Shipment.VisitRequest(ข้อความ)ShipmentModel(ข้อความ)ShipmentModel.DurationDistanceMatrix(ข้อความ)ShipmentModel.DurationDistanceMatrix.Row(ข้อความ)ShipmentModel.Objective(ข้อความ)ShipmentModel.Objective.Type(enum)ShipmentModel.PrecedenceRule(ข้อความ)ShipmentRoute(ข้อความ)ShipmentRoute.Break(ข้อความ)ShipmentRoute.EncodedPolyline(ข้อความ)ShipmentRoute.Transition(ข้อความ)ShipmentRoute.VehicleLoad(ข้อความ)ShipmentRoute.Visit(ข้อความ)ShipmentRoute.Visit.VisitType(enum)ShipmentTypeIncompatibility(ข้อความ)ShipmentTypeIncompatibility.IncompatibilityMode(enum)ShipmentTypeRequirement(ข้อความ)ShipmentTypeRequirement.RequirementMode(enum)SkippedShipment(ข้อความ)SkippedShipment.Reason(ข้อความ)SkippedShipment.Reason.Code(enum)TimeWindow(ข้อความ)TransitionAttributes(ข้อความ)Uri(ข้อความ)Vehicle(ข้อความ)Vehicle.DurationLimit(ข้อความ)Vehicle.LoadLimit(ข้อความ)Vehicle.LoadLimit.Interval(ข้อความ)Vehicle.LoadLimit.LoadCost(ข้อความ)Vehicle.TravelMode(enum)Vehicle.UnloadingPolicy(enum)VehicleFullness(ข้อความ)Waypoint(ข้อความ)
RouteOptimization
บริการสำหรับการเพิ่มประสิทธิภาพการเดินทางของยานพาหนะ
ความถูกต้องของฟิลด์บางประเภท
google.protobuf.Timestamp- เวลาจะอยู่ในรูปแบบเวลา Unix: วินาทีนับตั้งแต่ 1970-01-01T00:00:00+00:00
- วินาทีต้องอยู่ในช่วง [0, 253402300799] เช่น ในช่วง [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00]
- ต้องไม่ตั้งค่า nanos หรือตั้งค่าเป็น 0
google.protobuf.Duration- วินาทีต้องอยู่ในช่วง [0, 253402300799] เช่น ในช่วง [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00]
- ต้องไม่ตั้งค่า nanos หรือตั้งค่าเป็น 0
google.type.LatLng- ละติจูดต้องอยู่ในช่วง [-90.0, 90.0]
- ลองจิจูดต้องอยู่ในช่วง [-180.0, 180.0]
- ละติจูดและลองจิจูดอย่างน้อย 1 รายการต้องไม่ใช่ 0
| BatchOptimizeTours |
|---|
|
เพิ่มประสิทธิภาพการเดินทางของยานพาหนะสำหรับข้อความ เมธอดนี้เป็นการดำเนินการที่ใช้เวลานาน (LRO) ระบบจะอ่านและเขียนอินพุตสำหรับการเพิ่มประสิทธิภาพ (ข้อความ ผู้ใช้สามารถโพล หากช่อง LRO หากช่อง
|
| OptimizeTours |
|---|
|
ส่ง โมเดล เป้าหมายคือการมอบหมาย
|
| OptimizeToursLongRunning |
|---|
|
นี่เป็นตัวแปรของเมธอด
|
| OptimizeToursUri |
|---|
|
นี่เป็นตัวแปรของเมธอด ไคลเอ็นต์จะระบุ URI ของ ควรใช้วิธีนี้แทนวิธี
|
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 |
น้ำหนักบรรทุกสูงสุดที่ทำได้ตลอดทั้งเส้นทาง (หรือโซลูชัน) สำหรับปริมาณแต่ละรายการในเส้นทางนี้ (หรือโซลูชัน) ซึ่งคำนวณเป็นค่าสูงสุดของ |
performed_mandatory_shipment_count |
จำนวนการจัดส่งที่จำเป็นที่ดำเนินการแล้ว เวอร์ชันทดลอง: ลักษณะการทำงานหรือการมีอยู่ของช่องนี้อาจเปลี่ยนแปลงได้ในอนาคต |
performed_shipment_penalty_cost_sum |
ผลรวมของ เวอร์ชันทดลอง: ลักษณะการทำงานหรือการมีอยู่ของช่องนี้อาจเปลี่ยนแปลงได้ในอนาคต |
BatchOptimizeToursMetadata
ประเภทนี้ไม่มีช่อง
ข้อมูลเมตาการดำเนินการสำหรับการเรียก BatchOptimizeToursRequest
BatchOptimizeToursRequest
ส่งคำขอเพิ่มประสิทธิภาพทัวร์ชมแบบกลุ่มเป็นการดำเนินการแบบอะซิงโครนัส ไฟล์อินพุตแต่ละไฟล์ควรมี OptimizeToursRequest 1 รายการ และไฟล์เอาต์พุตแต่ละไฟล์จะมี OptimizeToursResponse 1 รายการ คำขอมีข้อมูลสำหรับอ่าน/เขียนและแยกวิเคราะห์ไฟล์ ไฟล์อินพุตและเอาต์พุตทั้งหมดควรอยู่ภายใต้โปรเจ็กต์เดียวกัน
| ช่อง | |
|---|---|
parent |
ต้องระบุ กำหนดเป้าหมายโปรเจ็กต์และสถานที่ตั้งเพื่อโทรออก รูปแบบ:
ระบบไม่รองรับค่า |
model_configs[] |
ต้องระบุ ข้อมูลอินพุต/เอาต์พุตของโมเดลการซื้อแต่ละรายการ เช่น เส้นทางไฟล์และรูปแบบข้อมูล |
AsyncModelConfig
ข้อมูลสำหรับการแก้ปัญหาโมเดลการเพิ่มประสิทธิภาพ 1 โมเดลแบบอะซิงโครนัส
| ช่อง | |
|---|---|
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 ชั่วโมง" ตัวอย่างดังกล่าวจะแปลเป็น FrequencyConstraint ต่อไปนี้
{
min_break_duration { seconds: 3600 } # 1 hour.
max_inter_break_duration { 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
| ช่อง | |
|---|---|
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_below_soft_max |
ต้นทุนต่อกิโลเมตรที่เกิดขึ้นเพิ่มขึ้นสูงสุด
|
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.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours]
| ช่อง | |
|---|---|
data_format |
ต้องระบุ รูปแบบข้อมูลอินพุต |
ฟิลด์ Union source ต้องระบุ source ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น |
|
gcs_source |
ตำแหน่ง Google Cloud Storage ต้องเป็นออบเจ็กต์ (ไฟล์) เดียว |
ตำแหน่ง
สรุปสถานที่ตั้ง (จุดทางภูมิศาสตร์และส่วนหัวที่ไม่บังคับ)
| ช่อง | |
|---|---|
lat_lng |
พิกัดทางภูมิศาสตร์ของจุดอ้างอิง |
heading |
ทิศทางเข็มทิศที่เชื่อมโยงกับทิศทางการจราจร ค่านี้ใช้เพื่อระบุฝั่งถนนที่จะใช้สำหรับการรับและส่งผู้โดยสาร ค่าทิศทางอาจเป็นตั้งแต่ 0 ถึง 360 โดยที่ 0 หมายถึงทิศเหนือ 90 หมายถึงทิศตะวันออก เป็นต้น |
OptimizeToursLongRunningMetadata
ประเภทนี้ไม่มีช่อง
ข้อมูลเมตาการดำเนินการสำหรับการเรียก OptimizeToursLongRunning
OptimizeToursRequest
คำขอที่จะส่งไปยังเครื่องมือแก้ปัญหาการเพิ่มประสิทธิภาพการทัวร์ชม ซึ่งจะกำหนดรูปแบบการจัดส่งที่จะแก้ปัญหา รวมถึงพารามิเตอร์การเพิ่มประสิทธิภาพ
| ช่อง | |
|---|---|
parent |
ต้องระบุ กำหนดเป้าหมายโปรเจ็กต์หรือสถานที่เพื่อโทรออก รูปแบบ:
ระบบไม่รองรับค่า |
timeout |
หากตั้งค่าการหมดเวลานี้ เซิร์ฟเวอร์จะแสดงการตอบกลับก่อนที่ระยะเวลาหมดเวลาจะผ่านไปหรือถึงกำหนดเวลาของเซิร์ฟเวอร์สำหรับคำขอที่โหลดแบบซิงโครนัส แล้วแต่ว่าอย่างใดจะถึงก่อน สำหรับคำขอที่โหลดแบบอะซิงโครนัส เซิร์ฟเวอร์จะสร้างโซลูชัน (หากเป็นไปได้) ก่อนที่ระยะหมดเวลาจะสิ้นสุดลง |
model |
โมเดลการจัดส่งที่ต้องการแก้ปัญหา |
solving_mode |
โดยค่าเริ่มต้น โหมดการแก้โจทย์คือ |
search_mode |
โหมดการค้นหาที่ใช้เพื่อแก้ปัญหาคำขอ |
injected_first_solution_routes[] |
แนะนําอัลกอริทึมการเพิ่มประสิทธิภาพในการค้นหาโซลูชันแรกที่คล้ายกับโซลูชันก่อนหน้า โมเดลจะถูกจำกัดเมื่อสร้างโซลูชันแรก ระบบจะข้ามการจัดส่งที่ไม่ได้ดำเนินการในเส้นทางโดยนัยในโซลูชันแรก แต่อาจดำเนินการในโซลูชันต่อๆ ไป โซลูชันต้องเป็นไปตามสมมติฐานความถูกต้องพื้นฐานบางประการ ดังนี้
หากโซลูชันที่แทรกไม่สามารถทำได้ ระบบอาจไม่แสดงข้อผิดพลาดในการตรวจสอบความถูกต้อง และอาจแสดงข้อผิดพลาดที่ระบุว่าไม่สามารถทำได้แทน |
injected_solution_constraint |
จำกัดอัลกอริทึมการเพิ่มประสิทธิภาพเพื่อค้นหาโซลูชันสุดท้ายที่คล้ายกับโซลูชันก่อนหน้า ตัวอย่างเช่น อาจใช้เพื่อตรึงบางส่วนของเส้นทางที่เสร็จสมบูรณ์แล้วหรือที่กำลังจะเสร็จสมบูรณ์แต่ต้องไม่มีการแก้ไข หากโซลูชันที่แทรกไม่สามารถทำได้ ระบบอาจไม่แสดงข้อผิดพลาดในการตรวจสอบความถูกต้อง และอาจแสดงข้อผิดพลาดที่ระบุว่าไม่สามารถทำได้แทน |
refresh_details_routes[] |
หากไม่ว่างเปล่า ระบบจะรีเฟรชเส้นทางที่ระบุโดยไม่แก้ไขลำดับการเข้าชมหรือระยะเวลาเดินทางที่เกี่ยวข้อง โดยจะอัปเดตเฉพาะรายละเอียดอื่นๆ การดำเนินการนี้ไม่ได้แก้ปัญหาโมเดล ตั้งแต่เดือนพฤศจิกายน 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 |
แก้ปัญหาโมเดล ระบบอาจออกคำเตือนใน [OptimizeToursResponse.validation_errors][google.cloud.optimization.v1.OptimizeToursResponse.validation_errors] |
VALIDATE_ONLY |
ตรวจสอบโมเดลเท่านั้นโดยไม่แก้ปัญหา: ป้อนข้อมูล OptimizeToursResponse.validation_errors ให้มากที่สุดเท่าที่จะเป็นไปได้ |
DETECT_SOME_INFEASIBLE_SHIPMENTS |
ป้อนข้อมูลเฉพาะ สำคัญ: ระบบจะไม่แสดงการจัดส่งที่เป็นไปไม่ได้ทั้งหมดที่นี่ แต่จะแสดงเฉพาะการจัดส่งที่ตรวจพบว่าเป็นไปไม่ได้ในระหว่างการประมวลผลล่วงหน้า |
TRANSFORM_AND_RETURN_REQUEST |
โหมดนี้จะทำงานได้ก็ต่อเมื่อ เวอร์ชันทดลอง: ดูรายละเอียดเพิ่มเติมได้ที่ https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request |
OptimizeToursResponse
การตอบกลับหลังจากแก้ปัญหาการเพิ่มประสิทธิภาพการเดินทางซึ่งมีเส้นทางที่ยานพาหนะแต่ละคันใช้ การจัดส่งที่ข้ามไป และค่าใช้จ่ายโดยรวมของโซลูชัน
| ช่อง | |
|---|---|
routes[] |
เส้นทางที่คำนวณสำหรับยานพาหนะแต่ละคัน โดยเส้นทางที่ i สอดคล้องกับยานพาหนะที่ i ในโมเดล |
request_label |
สำเนาของ |
skipped_shipments[] |
รายการการจัดส่งทั้งหมดที่ข้ามไป |
validation_errors[] |
รายการข้อผิดพลาดในการตรวจสอบทั้งหมดที่เราตรวจพบแยกต่างหาก ดูคำอธิบาย "ข้อผิดพลาดหลายรายการ" สำหรับข้อความ |
processed_request |
ในบางกรณี เราจะแก้ไขคำขอที่เข้ามาใหม่ก่อนที่จะแก้ไขปัญหา เช่น การเพิ่มค่าใช้จ่าย หาก solving_mode == TRANSFORM_AND_RETURN_REQUEST ระบบจะแสดงคำขอที่แก้ไขแล้วที่นี่ เวอร์ชันทดลอง: ดูรายละเอียดเพิ่มเติมได้ที่ https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request |
metrics |
เมตริกระยะเวลา ระยะทาง และการใช้งานสำหรับโซลูชันนี้ |
เมตริก
เมตริกโดยรวมที่รวบรวมจากทุกเส้นทาง
| ช่อง | |
|---|---|
aggregated_route_metrics |
ซึ่งเป็นค่าที่รวบรวมจากเส้นทางต่างๆ เมตริกแต่ละรายการคือผลรวม (หรือค่าสูงสุดสำหรับภาระงาน) ของฟิลด์ |
skipped_mandatory_shipment_count |
จำนวนการจัดส่งที่จำเป็นที่ข้ามไป |
used_vehicle_count |
จำนวนยานพาหนะที่ใช้ หมายเหตุ: หากเส้นทางของยานพาหนะว่างเปล่าและ |
earliest_vehicle_start_time |
เวลาเริ่มต้นที่เร็วที่สุดสำหรับยานพาหนะที่ใช้แล้ว ซึ่งคำนวณเป็นค่าต่ำสุดของยานพาหนะที่ใช้แล้วทั้งหมดของ |
latest_vehicle_end_time |
เวลาสิ้นสุดล่าสุดสำหรับยานพาหนะมือสอง ซึ่งคำนวณเป็นค่าสูงสุดของยานพาหนะมือสองทั้งหมดที่ |
costs |
ค่าใช้จ่ายของโซลูชัน โดยแจกแจงตามช่องคำขอที่เกี่ยวข้องกับค่าใช้จ่าย คีย์คือเส้นทางโปรโตที่สัมพันธ์กับ OptimizeToursRequest ที่ป้อน เช่น "model.shipments.pickups.cost" และค่าคือต้นทุนทั้งหมดที่สร้างโดยช่องต้นทุนที่เกี่ยวข้อง ซึ่งรวมไว้ในโซลูชันทั้งหมด กล่าวคือ costs["model.shipments.pickups.cost"] คือผลรวมของค่าใช้จ่ายในการรับสินค้าทั้งหมดในโซลูชัน ค่าใช้จ่ายทั้งหมดที่กำหนดไว้ในโมเดลจะรายงานอย่างละเอียดที่นี่ ยกเว้นค่าใช้จ่ายที่เกี่ยวข้องกับ TransitionAttributes ซึ่งจะรายงานแบบรวมเท่านั้น ณ เดือนมกราคม 2022 |
total_cost |
ค่าใช้จ่ายทั้งหมดของโซลูชัน ผลรวมของค่าทั้งหมดในแผนที่ค่าใช้จ่าย |
OptimizeToursUriMetadata
ประเภทนี้ไม่มีช่อง
ข้อมูลเมตาการดำเนินการสำหรับการเรียก OptimizeToursUri
OptimizeToursUriRequest
คำขอที่เมธอด OptimizeToursUri ใช้
| ช่อง | |
|---|---|
parent |
ต้องระบุ กำหนดเป้าหมายโปรเจ็กต์หรือสถานที่เพื่อโทรออก รูปแบบ:
ระบบไม่รองรับค่า |
input |
ต้องระบุ URI ของออบเจ็กต์ Cloud Storage ที่มี |
output |
ต้องระบุ URI ของออบเจ็กต์ Cloud Storage ที่จะมี |
OptimizeToursUriResponse
การตอบกลับที่แสดงโดยเมธอด OptimizeToursUri
| ช่อง | |
|---|---|
output |
ไม่บังคับ URI ของออบเจ็กต์ Cloud Storage ที่มี คุณสามารถใช้ |
OptimizeToursValidationError
อธิบายข้อผิดพลาดหรือคำเตือนที่พบเมื่อตรวจสอบ OptimizeToursRequest
| ช่อง | |
|---|---|
code |
ข้อผิดพลาดในการตรวจสอบจะกำหนดโดยคู่ ( ช่องที่อยู่ถัดจากส่วนนี้จะให้บริบทเพิ่มเติมเกี่ยวกับข้อผิดพลาด ข้อผิดพลาดหลายรายการ: เมื่อมีข้อผิดพลาดหลายรายการ กระบวนการตรวจสอบจะพยายามแสดงข้อผิดพลาดหลายรายการ กระบวนการนี้ไม่สมบูรณ์แบบ เช่นเดียวกับคอมไพเลอร์ ข้อผิดพลาดในการตรวจสอบบางอย่างจะเป็น "ร้ายแรง" ซึ่งหมายความว่าจะหยุดกระบวนการตรวจสอบทั้งหมด ซึ่งเป็นกรณีที่เกิดข้อผิดพลาด ความเสถียร: |
display_name |
ชื่อที่แสดงของข้อผิดพลาด |
fields[] |
บริบทของข้อผิดพลาดอาจเกี่ยวข้องกับ 0, 1 (ส่วนใหญ่) หรือหลายช่อง ตัวอย่างเช่น การอ้างอิงถึงยานพาหนะ #4 และการรับสินค้าครั้งแรกของการจัดส่ง #2 สามารถทำได้ดังนี้ อย่างไรก็ตาม โปรดทราบว่าจำนวนสมาชิกในเซ็ตของ |
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 |
ชื่อของฟิลด์ เช่น "vehicles" |
sub_field |
ช่องย่อยที่ซ้อนกันแบบซ้ำๆ หากจำเป็น |
ฟิลด์ Union
|
|
index |
ดัชนีของฟิลด์หากซ้ำ |
key |
คีย์หากช่องเป็นแผนที่ |
OutputConfig
ระบุปลายทางสำหรับผลลัพธ์ [BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours]
| ช่อง | |
|---|---|
data_format |
ต้องระบุ รูปแบบข้อมูลเอาต์พุต |
ฟิลด์ Union destination ต้องระบุ destination ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น |
|
gcs_destination |
ตำแหน่ง Google Cloud Storage ที่จะเขียนเอาต์พุต |
RouteModifiers
สรุปชุดเงื่อนไขที่ไม่บังคับซึ่งต้องเป็นไปตามเงื่อนไขเมื่อคำนวณเส้นทางของยานพาหนะ ซึ่งคล้ายกับ RouteModifiers ใน Routes Preferred API ของ Google Maps Platform โปรดดูที่ https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers
| ช่อง | |
|---|---|
avoid_tolls |
ระบุว่าจะเลี่ยงทางพิเศษหรือไม่ หากเหมาะสม ระบบจะเลือกเส้นทางที่ไม่มีทางพิเศษก่อน ใช้ได้กับโหมดการเดินทางที่ใช้ยานพาหนะเท่านั้น |
avoid_highways |
ระบุว่าจะเลี่ยงทางหลวงหรือไม่ หากเหมาะสม ระบบจะเลือกเส้นทางที่ไม่มีทางหลวงก่อน ใช้ได้กับโหมดการเดินทางที่ใช้ยานพาหนะเท่านั้น |
avoid_ferries |
ระบุว่าจะหลีกเลี่ยงเรือข้ามฟากตามความเหมาะสมหรือไม่ ระบบจะให้ความสำคัญกับเส้นทางที่ไม่มีการเดินทางโดยเรือเฟอร์รี่ ใช้ได้กับโหมดการเดินทางที่ใช้ยานพาหนะเท่านั้น |
avoid_indoor |
ไม่บังคับ ระบุว่าจะหลีกเลี่ยงการนำทางในอาคารหรือไม่ หากเป็นไปได้ ระบบจะให้ความสำคัญกับเส้นทางที่ไม่มีการนำทางในอาคาร ใช้ได้กับโหมดการเดินทาง |
การจัดส่ง
การจัดส่งสินค้า 1 รายการ ตั้งแต่การรับสินค้าไปจนถึงการนำส่งสินค้า เพื่อให้การจัดส่งถือว่าดำเนินการแล้ว ยานพาหนะที่ไม่ซ้ำกันต้องไปที่สถานที่รับสินค้าแห่งใดแห่งหนึ่ง (และลดความจุสำรองตามลำดับ) จากนั้นจึงไปที่สถานที่นำส่งแห่งใดแห่งหนึ่งในภายหลัง (และเพิ่มความจุสำรองอีกครั้งตามลำดับ)
| ช่อง | |
|---|---|
display_name |
ชื่อที่แสดงของการจัดส่งที่ผู้ใช้กำหนด โดยมีความยาวได้สูงสุด 63 อักขระ และอาจใช้อักขระ UTF-8 |
pickups[] |
ชุดทางเลือกในการรับสินค้าที่เชื่อมโยงกับการจัดส่ง หากไม่ได้ระบุ ยานพาหนะจะต้องไปที่สถานที่ตั้งที่สอดคล้องกับการนำส่งเท่านั้น |
deliveries[] |
ชุดตัวเลือกการนำส่งที่เชื่อมโยงกับการจัดส่ง หากไม่ได้ระบุ ยานพาหนะจะต้องไปที่สถานที่ตั้งที่สอดคล้องกับการรับเท่านั้น |
load_demands |
ความต้องการในการบรรทุกของการจัดส่ง (เช่น น้ำหนัก ปริมาตร จำนวนพาเลท เป็นต้น) คีย์ในแผนที่ควรเป็นตัวระบุที่อธิบายประเภทของภาระงานที่เกี่ยวข้อง และควรระบุหน่วยด้วย เช่น "weight_kg", "volume_gallons", "pallet_count" เป็นต้น หากคีย์ที่ระบุไม่ปรากฏในแผนที่ ระบบจะถือว่าภาระงานที่เกี่ยวข้องเป็นค่า Null |
allowed_vehicle_indices[] |
ชุดยานพาหนะที่อาจทำการจัดส่งนี้ หากเว้นว่างไว้ ยานพาหนะทั้งหมดอาจดำเนินการได้ ยานพาหนะจะระบุตามดัชนีในรายการ |
costs_per_vehicle[] |
ระบุค่าใช้จ่ายที่เกิดขึ้นเมื่อยานพาหนะแต่ละคันนำส่งการจัดส่งนี้ หากระบุไว้ ต้องมีอย่างใดอย่างหนึ่งต่อไปนี้
ค่าใช้จ่ายเหล่านี้ต้องอยู่ในหน่วยเดียวกับ |
costs_per_vehicle_indices[] |
ดัชนีของยานพาหนะที่ใช้ |
pickup_to_delivery_absolute_detour_limit |
ระบุเวลาอ้อมสูงสุดแบบสัมบูรณ์เมื่อเทียบกับเส้นทางที่สั้นที่สุดจากจุดรับไปยังจุดนำส่ง หากระบุไว้ ค่าต้องไม่เป็นลบ และการจัดส่งต้องมีการรับสินค้าและการนำส่งอย่างน้อย 1 รายการ ตัวอย่างเช่น ให้ t เป็นเวลาที่สั้นที่สุดที่ใช้ในการเดินทางจากทางเลือกการรับที่เลือกไปยังทางเลือกการนำส่งที่เลือกโดยตรง จากนั้นการตั้งค่า หากระบุทั้งขีดจำกัดแบบสัมพัทธ์และแบบสัมบูรณ์ในการจัดส่งเดียวกัน ระบบจะใช้ขีดจำกัดที่เข้มงวดกว่าสำหรับคู่การรับ/นำส่งที่เป็นไปได้แต่ละคู่ ตั้งแต่เดือนตุลาคม 2017 เป็นต้นมา ระบบจะรองรับการออกนอกเส้นทางก็ต่อเมื่อระยะเวลาการเดินทางไม่ได้ขึ้นอยู่กับยานพาหนะเท่านั้น |
pickup_to_delivery_time_limit |
ระบุระยะเวลาสูงสุดตั้งแต่เริ่มรับสินค้าจนถึงเริ่มนำส่งสินค้า หากระบุไว้ ค่าต้องไม่เป็นลบ และการจัดส่งต้องมีการรับสินค้าและการนำส่งอย่างน้อย 1 รายการ ซึ่งไม่ขึ้นอยู่กับตัวเลือกที่เลือกสำหรับการรับและการนำส่ง และไม่ขึ้นอยู่กับความเร็วของยานพาหนะ ซึ่งสามารถระบุควบคู่ไปกับข้อจำกัดการออกนอกเส้นทางสูงสุด โดยโซลูชันจะยึดตามข้อกำหนดทั้ง 2 รายการ |
shipment_type |
สตริงที่ไม่ใช่ค่าว่างซึ่งระบุ "ประเภท" สำหรับการจัดส่งนี้ ฟีเจอร์นี้ใช้เพื่อกำหนดความไม่เข้ากันหรือข้อกำหนดระหว่าง แตกต่างจาก |
label |
ระบุป้ายกำกับสำหรับการจัดส่งนี้ ป้ายกำกับนี้จะแสดงในการตอบกลับใน |
ignore |
หากเป็นจริง ให้ข้ามการจัดส่งนี้ แต่ไม่ต้องใช้ การละเว้นการจัดส่งจะส่งผลให้เกิดข้อผิดพลาดในการตรวจสอบเมื่อมี อนุญาตให้ละเว้นการจัดส่งที่ดำเนินการใน |
penalty_cost |
หากการจัดส่งไม่เสร็จสมบูรณ์ ระบบจะเพิ่มค่าปรับนี้ลงในต้นทุนโดยรวมของเส้นทาง การจัดส่งจะถือว่าเสร็จสมบูรณ์หากมีการเข้าชมตัวเลือกการรับและการนำส่งอย่างใดอย่างหนึ่ง ต้นทุนอาจแสดงในหน่วยเดียวกับที่ใช้สำหรับช่องอื่นๆ ทั้งหมดที่เกี่ยวข้องกับต้นทุนในโมเดล และต้องเป็นค่าบวก สำคัญ: หากไม่ได้ระบุค่าปรับนี้ ระบบจะถือว่าค่าปรับเป็นแบบไม่จำกัด กล่าวคือ การจัดส่งต้องเสร็จสมบูรณ์ |
pickup_to_delivery_relative_detour_limit |
ระบุเวลาอ้อมสูงสุดที่สัมพันธ์กันเมื่อเทียบกับเส้นทางที่สั้นที่สุดจากจุดรับไปยังจุดนำส่ง หากระบุไว้ ค่าต้องไม่เป็นลบ และการจัดส่งต้องมีการรับสินค้าและการนำส่งอย่างน้อย 1 รายการ ตัวอย่างเช่น ให้ t เป็นเวลาที่สั้นที่สุดที่ใช้ในการเดินทางจากทางเลือกการรับที่เลือกไปยังทางเลือกการนำส่งที่เลือกโดยตรง จากนั้นการตั้งค่า หากระบุทั้งขีดจำกัดแบบสัมพัทธ์และแบบสัมบูรณ์ในการจัดส่งเดียวกัน ระบบจะใช้ขีดจำกัดที่เข้มงวดกว่าสำหรับคู่การรับ/นำส่งที่เป็นไปได้แต่ละคู่ ตั้งแต่เดือนตุลาคม 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 |
ระบุป้ายกำกับสำหรับ |
avoid_u_turns |
ระบุว่าควรหลีกเลี่ยงการกลับรถในเส้นทางการขับขี่ที่ตำแหน่งนี้หรือไม่ การหลีกเลี่ยงการกลับรถเป็นความพยายามอย่างเต็มที่และไม่รับประกันว่าจะหลีกเลี่ยงได้อย่างสมบูรณ์ ฟีเจอร์นี้เป็นฟีเจอร์ทดลองและลักษณะการทำงานอาจมีการเปลี่ยนแปลง เวอร์ชันทดลอง: ดูรายละเอียดเพิ่มเติมได้ที่ https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request |
ShipmentModel
โมเดลการจัดส่งประกอบด้วยชุดการจัดส่งที่ต้องดำเนินการโดยชุดยานพาหนะ โดยลดต้นทุนโดยรวมให้เหลือน้อยที่สุด ซึ่งเป็นผลรวมของสิ่งต่อไปนี้
- ต้นทุนในการกำหนดเส้นทางยานพาหนะ (ผลรวมของต้นทุนต่อเวลาทั้งหมด ต้นทุนต่อระยะเวลาเดินทาง และต้นทุนคงที่ของยานพาหนะทั้งหมด)
- ค่าปรับสำหรับการจัดส่งที่ไม่ได้ดำเนินการ
- ค่าใช้จ่ายของระยะเวลาการจัดส่งทั่วโลก
| ช่อง | |
|---|---|
shipments[] |
ชุดการจัดส่งที่ต้องดำเนินการในโมเดล |
vehicles[] |
ชุดยานพาหนะที่ใช้ในการเข้าชมได้ |
objectives[] |
ชุดวัตถุประสงค์สำหรับโมเดลนี้ ซึ่งเราจะเปลี่ยนเป็นต้นทุน หากไม่ว่างเปล่า โมเดลอินพุตต้องไม่มีค่าใช้จ่าย หากต้องการรับคำขอที่แก้ไขแล้ว โปรดใช้ เวอร์ชันทดลอง: ดูรายละเอียดเพิ่มเติมได้ที่ https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request |
global_start_time |
เวลาเริ่มต้นและสิ้นสุดทั่วโลกของโมเดล: เวลาที่อยู่นอกช่วงนี้จะถือว่าไม่ถูกต้อง ระยะเวลาของโมเดลต้องน้อยกว่า 1 ปี กล่าวคือ เมื่อใช้ช่อง |
global_end_time |
หากไม่ได้ตั้งค่า ระบบจะใช้ 00:00:00 UTC ของวันที่ 1 มกราคม 1971 (เช่น วินาที: 31536000, นาโน: 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[] |
ชุดของ shipment_types ที่ใช้ร่วมกันไม่ได้ (ดู |
shipment_type_requirements[] |
ชุดข้อกำหนด |
precedence_rules[] |
ชุดกฎลำดับความสำคัญที่ต้องบังคับใช้ในโมเดล สำคัญ: การใช้กฎลำดับความสำคัญจะจำกัดขนาดของปัญหาที่สามารถเพิ่มประสิทธิภาพได้ ระบบอาจปฏิเสธคำขอที่ใช้กฎลำดับความสำคัญซึ่งรวมการจัดส่งหลายรายการ |
max_active_vehicles |
จำกัดจำนวนยานพาหนะที่ใช้งานอยู่สูงสุด ยานพาหนะจะทำงานหากเส้นทางมีการจัดส่งอย่างน้อย 1 รายการ ซึ่งสามารถใช้เพื่อจำกัดจำนวนเส้นทางในกรณีที่มีคนขับน้อยกว่ายานพาหนะและกลุ่มยานพาหนะมีความหลากหลาย จากนั้นการเพิ่มประสิทธิภาพจะเลือกชุดย่อยของยานพาหนะที่ดีที่สุดที่จะใช้ ต้องเป็นค่าบวกเท่านั้น |
DurationDistanceMatrix
ระบุเมทริกซ์ระยะเวลาและระยะทางจากสถานที่เริ่มต้นของการเข้าชมและยานพาหนะไปยังสถานที่สิ้นสุดของการเข้าชมและยานพาหนะ
| ช่อง | |
|---|---|
rows[] |
ระบุแถวของเมทริกซ์ระยะเวลาและระยะทาง โดยต้องมีจำนวนองค์ประกอบเท่ากับ |
vehicle_start_tag |
แท็กที่กำหนดว่าเมทริกซ์ระยะเวลาและระยะทางนี้ใช้กับยานพาหนะใด หากเว้นว่างไว้ ข้อมูลนี้จะมีผลกับยานพาหนะทั้งหมด และจะมีเมทริกซ์ได้เพียงรายการเดียวเท่านั้น จุดเริ่มต้นของยานพาหนะแต่ละคันต้องตรงกับเมทริกซ์ 1 รายการพอดี กล่าวคือ ช่อง เมทริกซ์ทั้งหมดต้องมี |
แถว
ระบุแถวของเมทริกซ์ระยะเวลาและระยะทาง
| ช่อง | |
|---|---|
durations[] |
ค่าระยะเวลาสำหรับแถวที่ระบุ โดยต้องมีจำนวนองค์ประกอบเท่ากับ |
meters[] |
ค่าระยะทางสำหรับแถวที่ระบุ หากไม่มีต้นทุนหรือข้อจำกัดที่อ้างอิงถึงระยะทางในโมเดล คุณสามารถเว้นว่างไว้ได้ ไม่เช่นนั้นจะต้องมีองค์ประกอบมากเท่ากับ |
วัตถุประสงค์
วัตถุประสงค์จะแทนที่รูปแบบต้นทุนโดยสมบูรณ์ จึงเข้ากันไม่ได้กับต้นทุนที่มีอยู่ก่อนหน้านี้ วัตถุประสงค์แต่ละรายการจะเชื่อมโยงกับต้นทุนที่กำหนดไว้ล่วงหน้าจำนวนหนึ่ง เช่น ยานพาหนะ การจัดส่ง หรือแอตทริบิวต์การเปลี่ยนผ่าน
เวอร์ชันทดลอง: ดูรายละเอียดเพิ่มเติมได้ที่ https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request
| ช่อง | |
|---|---|
type |
ประเภทของวัตถุประสงค์ |
weight |
วัตถุประสงค์นี้ควรนับเป็นสัดส่วนเท่าใดเมื่อเทียบกับวัตถุประสงค์อื่นๆ ซึ่งอาจเป็นจำนวนใดๆ ก็ได้ที่ไม่ติดลบ และน้ำหนักไม่จำเป็นต้องรวมกันได้ 1 น้ำหนักเริ่มต้นคือ 1.0 |
ประเภท
ประเภทวัตถุประสงค์ที่จะแมปกับชุดต้นทุน
| Enum | |
|---|---|
DEFAULT |
ระบบจะใช้ชุดต้นทุนเริ่มต้นเพื่อให้ได้โซลูชันที่สมเหตุสมผล หมายเหตุ: วัตถุประสงค์นี้สามารถใช้เดี่ยวๆ ได้ แต่จะเพิ่มด้วยน้ำหนัก 1.0 เสมอเป็นเกณฑ์พื้นฐานให้กับวัตถุประสงค์ที่ผู้ใช้ระบุ หากยังไม่มีอยู่ |
MIN_DISTANCE |
"MIN" ลดระยะทางรวมในการเดินทาง |
MIN_WORKING_TIME |
ลดเวลาทำงานทั้งหมด โดยรวมจากยานพาหนะทั้งหมด |
MIN_TRAVEL_TIME |
เหมือนกับด้านบน แต่เน้นที่ระยะเวลาเดินทางเท่านั้น |
MIN_NUM_VEHICLES |
ลดจำนวนยานพาหนะที่ใช้ |
PrecedenceRule
กฎลำดับความสำคัญระหว่าง 2 เหตุการณ์ (แต่ละเหตุการณ์คือการรับหรือการนำส่งพัสดุ) คือ เหตุการณ์ "ที่ 2" ต้องเริ่มอย่างน้อย offset_duration หลังจากเหตุการณ์ "แรก" เริ่มต้นขึ้น
ลำดับความสำคัญหลายรายการสามารถอ้างอิงถึงเหตุการณ์เดียวกัน (หรือที่เกี่ยวข้อง) ได้ เช่น "การรับ B เกิดขึ้นหลังจากการนำส่ง A" และ "การรับ C เกิดขึ้นหลังจากการรับ B"
นอกจากนี้ ลำดับความสำคัญจะมีผลก็ต่อเมื่อมีการจัดส่งทั้ง 2 รายการเท่านั้น และจะถูกละเว้นในกรณีอื่นๆ
| ช่อง | |
|---|---|
first_is_delivery |
ระบุว่าเหตุการณ์ "แรก" เป็นการนำส่งหรือไม่ |
second_is_delivery |
ระบุว่าเหตุการณ์ "ที่ 2" เป็นการนำส่งหรือไม่ |
offset_duration |
ออฟเซ็ตระหว่างเหตุการณ์ "แรก" และ "ที่ 2" โดยอาจเป็นค่าลบก็ได้ |
first_index |
ดัชนีการจัดส่งของเหตุการณ์ "แรก" ต้องระบุข้อมูลในช่องนี้ |
second_index |
ดัชนีการจัดส่งของเหตุการณ์ "ที่ 2" ต้องระบุข้อมูลในช่องนี้ |
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
โปรดทราบว่าเราแยกความแตกต่างระหว่างสิ่งต่อไปนี้
- "เหตุการณ์ที่เกิดขึ้น ณ เวลาใดเวลาหนึ่ง" เช่น การเริ่มต้นและสิ้นสุดของยานพาหนะ และการเริ่มต้นและสิ้นสุดของการเข้าชมแต่ละครั้ง (หรือที่เรียกว่าการมาถึงและการออกเดินทาง) โดยจะเกิดขึ้นในวินาทีที่กำหนด
- "ช่วงเวลา" เช่น การเข้าชม และการเปลี่ยนผ่านระหว่างการเข้าชม แม้ว่าบางครั้งช่วงเวลาอาจมีระยะเวลาเป็น 0 เช่น เริ่มต้นและสิ้นสุดในวินาทีเดียวกัน แต่ก็มักจะมีระยะเวลาเป็นบวก
ค่าคงที่:
- หากมีการเข้าชม 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
สุดท้าย ต่อไปนี้คือวิธีจัดเรียงการเดินทาง การหยุดพัก ความล่าช้า และการรอระหว่างการเปลี่ยนผ่าน
- โดยจะไม่มีการทับซ้อนกัน
- DELAY ไม่ซ้ำกันและต้องเป็นระยะเวลาต่อเนื่องก่อนการเข้าชมครั้งถัดไป (หรือจุดสิ้นสุดของยานพาหนะ) ดังนั้น คุณจึงเพียงแค่ต้องทราบระยะเวลาของความล่าช้าเพื่อทราบเวลาเริ่มต้นและเวลาสิ้นสุด
- BREAKS คือช่วงเวลาที่ต่อเนื่องกันและไม่ทับซ้อนกัน การตอบกลับจะระบุเวลาเริ่มต้นและระยะเวลาของช่วงพักแต่ละช่วง
- TRAVEL และ WAIT เป็น "การดำเนินการที่ถูกขัดจังหวะได้" โดยอาจถูกขัดจังหวะหลายครั้งในระหว่างการเปลี่ยนสถานะนี้ ไคลเอ็นต์สามารถสันนิษฐานได้ว่าการเดินทางจะเกิดขึ้น "โดยเร็วที่สุด" และ "รอ" จะเติมเวลาที่เหลือ
ตัวอย่าง (ที่ซับซ้อน)
TRANSITION[i]
--++-----+-----------------------------------------------------------++-->
|| | | | | | | ||
|| T | B | T | | B | | D ||
|| r | r | r | W | r | W | e ||
|| a | e | a | a | e | a | l ||
|| v | a | v | i | a | i | a ||
|| e | k | e | t | k | t | y ||
|| l | | l | | | | ||
|| | | | | | | ||
--++-----------------------------------------------------------------++-->
| ช่อง | |
|---|---|
vehicle_index |
ยานพาหนะที่ใช้เส้นทาง ซึ่งระบุโดยดัชนีในแหล่งที่มา |
vehicle_label |
ป้ายกำกับของยานพาหนะที่ใช้เส้นทางนี้ ซึ่งเท่ากับ |
vehicle_start_time |
เวลาที่ยานพาหนะเริ่มเส้นทาง |
vehicle_end_time |
เวลาที่ยานพาหนะสิ้นสุดเส้นทาง |
visits[] |
ลำดับการเข้าชมที่เรียงลำดับซึ่งแสดงถึงเส้นทาง visits[i] คือการเข้าชมครั้งที่ i ในเส้นทาง หากช่องนี้ว่างเปล่า ระบบจะถือว่ารถคันนี้ไม่ได้ใช้งาน |
transitions[] |
รายการการเปลี่ยนผ่านตามลำดับสำหรับเส้นทาง |
has_traffic_infeasibilities |
เมื่อตั้งค่า การมาถึงที่ next_visit มีแนวโน้มที่จะเกิดขึ้นช้ากว่ากรอบเวลาปัจจุบันเนื่องจากระยะเวลาเดินทางโดยประมาณเพิ่มขึ้น |
route_polyline |
การแสดงเส้นประกอบที่เข้ารหัสของเส้นทาง ระบบจะป้อนข้อมูลในช่องนี้ก็ต่อเมื่อตั้งค่า |
breaks[] |
ช่วงพักที่กำหนดไว้สำหรับยานพาหนะที่ใช้เส้นทางนี้ ลำดับ |
metrics |
เมตริกระยะเวลา ระยะทาง และภาระงานสำหรับเส้นทางนี้ ระบบจะรวมช่องของ |
vehicle_fullness |
ช่อง เวอร์ชันทดลอง: ลักษณะการทำงานหรือการมีอยู่ของช่องนี้อาจเปลี่ยนแปลงได้ในอนาคต |
route_costs |
ค่าใช้จ่ายของเส้นทาง โดยแจกแจงตามช่องคำขอที่เกี่ยวข้องกับค่าใช้จ่าย คีย์คือเส้นทางโปรโตที่สัมพันธ์กับ OptimizeToursRequest อินพุต เช่น "model.shipments.pickups.cost" และค่าคือต้นทุนรวมที่สร้างขึ้นโดยช่องต้นทุนที่เกี่ยวข้อง ซึ่งรวมตลอดทั้งเส้นทาง กล่าวคือ costs["model.shipments.pickups.cost"] คือผลรวมของค่าใช้จ่ายในการรับสินค้าทั้งหมดตลอดเส้นทาง ค่าใช้จ่ายทั้งหมดที่กำหนดไว้ในโมเดลจะรายงานอย่างละเอียดที่นี่ ยกเว้นค่าใช้จ่ายที่เกี่ยวข้องกับ TransitionAttributes ซึ่งจะรายงานแบบรวมเท่านั้น ณ เดือนมกราคม 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 |
การแสดงเส้นประกอบที่เข้ารหัสของเส้นทางที่ใช้ในระหว่างการเปลี่ยนเส้นทาง ระบบจะป้อนข้อมูลในช่องนี้ก็ต่อเมื่อตั้งค่า |
route_token |
เอาต์พุตเท่านั้น โทเค็นทึบแสงที่สามารถส่งไปยัง Navigation SDK เพื่อสร้างเส้นทางใหม่ระหว่างการนำทาง และในกรณีที่มีการเปลี่ยนเส้นทาง ให้ยึดตามความตั้งใจเดิมเมื่อสร้างเส้นทาง ให้ถือว่าโทเค็นนี้เป็น Blob ที่ไม่ชัดเจน อย่าเปรียบเทียบค่าของโทเค็นในคำขอต่างๆ เนื่องจากค่าอาจเปลี่ยนแปลงแม้ว่าบริการจะแสดงเส้นทางเดียวกันทุกประการก็ตาม ระบบจะป้อนข้อมูลในช่องนี้ก็ต่อเมื่อตั้งค่า |
vehicle_loads |
น้ำหนักบรรทุกของยานพาหนะระหว่างการเปลี่ยนผ่านนี้ สำหรับแต่ละประเภทที่ปรากฏใน ภาระงานระหว่างการเปลี่ยนครั้งแรกคือภาระงานเริ่มต้นของเส้นทางของยานพาหนะ จากนั้นหลังจากการเข้าชมแต่ละครั้ง ระบบจะเพิ่มหรือลบ |
VehicleLoad
รายงานน้ำหนักบรรทุกจริงของยานพาหนะ ณ จุดใดจุดหนึ่งตามเส้นทางสำหรับประเภทที่ระบุ (ดู Transition.vehicle_loads)
| ช่อง | |
|---|---|
amount |
ปริมาณน้ำหนักบรรทุกบนยานพาหนะสำหรับประเภทที่ระบุ โดยปกติแล้วหน่วยของโหลดจะระบุตามประเภท ดู |
ไปที่
การเข้าชมที่ดำเนินการระหว่างเส้นทาง การเข้าชมนี้สอดคล้องกับการรับหรือการนำส่ง Shipment
| ช่อง | |
|---|---|
shipment_index |
ดัชนีของช่อง |
is_pickup |
หากเป็นจริง การเข้าชมจะสอดคล้องกับการรับ |
visit_request_index |
ดัชนีของ |
start_time |
เวลาที่เริ่มเข้าชม โปรดทราบว่ารถอาจมาถึงสถานที่เข้าชมเร็วกว่านี้ เวลาสอดคล้องกับ |
load_demands |
ความต้องการโหลดการเข้าชมทั้งหมดเป็นผลรวมของการจัดส่งและคำขอการเข้าชม |
detour |
เวลาที่ใช้ในการอ้อมเพิ่มเติมเนื่องจากการจัดส่งที่เข้าชมในเส้นทางก่อนการเข้าชม และเวลาที่อาจต้องรอซึ่งเกิดจากกรอบเวลา หากการเข้าชมเป็นการนำส่ง ระบบจะคำนวณการออกนอกเส้นทางจากการเข้าชมเพื่อรับพัสดุที่เกี่ยวข้อง และจะเท่ากับ มิฉะนั้น ระบบจะคำนวณจาก |
shipment_label |
สำเนาของ |
visit_label |
สำเนาของ |
visit_type |
ไม่บังคับ ระบุประเภทการเข้าชม ลบล้างช่อง |
injected_solution_location_token |
โทเค็นทึบแสงที่แสดงข้อมูลเกี่ยวกับสถานที่เข้าชม ระบบอาจป้อนข้อมูลในช่องนี้ในการเข้าชมของเส้นทางผลลัพธ์เมื่อตั้งค่า เวอร์ชันทดลอง: ดูรายละเอียดเพิ่มเติมได้ที่ https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request |
VisitType
ระบุว่าการเข้าชมเป็นการรับสินค้า การนำส่ง หรือการเข้าชม Stop ระบบจะใช้การเข้าชมจุดแวะพักเมื่อเปิดใช้การเพิ่มประสิทธิภาพแบบหลายโมดัลเท่านั้น
| Enum | |
|---|---|
VISIT_TYPE_UNSPECIFIED |
ประเภทการเข้าชมที่ไม่ระบุ |
PICKUP_SHIPMENT |
การเข้าชมสอดคล้องกับการรับพัสดุ |
DELIVER_SHIPMENT |
การเข้าชมจะสอดคล้องกับการนำส่งพัสดุ |
ShipmentTypeIncompatibility
ระบุความไม่เข้ากันระหว่างการจัดส่งโดยขึ้นอยู่กับ shipment_type การปรากฏของการจัดส่งที่เข้ากันไม่ได้ในเส้นทางเดียวกันจะถูกจำกัดตามโหมดความเข้ากันไม่ได้
| ช่อง | |
|---|---|
types[] |
รายการประเภทที่ไม่รองรับ การจัดส่ง 2 รายการที่มี |
incompatibility_mode |
โหมดที่ใช้กับความไม่เข้ากัน |
IncompatibilityMode
โหมดที่กำหนดวิธีจำกัดการปรากฏของการจัดส่งที่เข้ากันไม่ได้ในเส้นทางเดียวกัน
| Enum | |
|---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
โหมดความเข้ากันไม่ได้ที่ไม่ได้ระบุ ไม่ควรใช้ค่านี้ |
NOT_PERFORMED_BY_SAME_VEHICLE |
ในโหมดนี้ การจัดส่ง 2 รายการที่มีประเภทที่เข้ากันไม่ได้จะใช้ยานพาหนะร่วมกันไม่ได้ |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
ในโหมดนี้ การจัดส่ง 2 รายการที่มีประเภทที่เข้ากันไม่ได้จะอยู่บนยานพาหนะคันเดียวกันในเวลาเดียวกันไม่ได้
|
ShipmentTypeRequirement
ระบุข้อกำหนดระหว่างการจัดส่งตาม shipment_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[] |
รายการเหตุผลที่อธิบายสาเหตุที่ข้ามการจัดส่ง ดูความคิดเห็นด้านบน |
penalty_cost |
นี่คือสำเนาของ เวอร์ชันทดลอง: ลักษณะการทำงานหรือการมีอยู่ของช่องนี้อาจเปลี่ยนแปลงได้ในอนาคต |
estimated_incompatible_vehicle_ratio |
อัตราส่วนโดยประมาณของยานพาหนะที่ไม่สามารถจัดส่งนี้ได้เนื่องจากสาเหตุอย่างน้อย 1 ข้อด้านล่าง หมายเหตุ: ระบบจะกรอกข้อมูลนี้เมื่อเหตุผลเกี่ยวข้องกับยานพาหนะเท่านั้น เวอร์ชันทดลอง: ลักษณะการทำงานหรือการมีอยู่ของช่องนี้อาจเปลี่ยนแปลงได้ในอนาคต |
เหตุผล
หากเราอธิบายได้ว่าเหตุใดจึงข้ามการจัดส่ง เหตุผลจะแสดงที่นี่ หากเหตุผลไม่เหมือนกันทั้งหมดสำหรับยานพาหนะทั้งหมด 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) ความจุ "ลูกแพร์" ของยานพาหนะอย่างน้อย 1 คันจะเกิน (รวมถึงยานพาหนะ 3) และขีดจำกัดระยะทางของยานพาหนะอย่างน้อย 1 คันจะเกิน (รวมถึงยานพาหนะ 1)
| ช่อง | |
|---|---|
code |
ดูความคิดเห็นของโค้ด |
example_vehicle_indices[] |
เหมือนกับ เวอร์ชันทดลอง: ลักษณะการทำงานหรือการมีอยู่ของช่องนี้อาจเปลี่ยนแปลงได้ในอนาคต |
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 ของการจัดส่งไม่ว่างเปล่าและยานพาหนะนี้ไม่ได้อยู่ในการจัดส่งนี้ |
VEHICLE_IGNORED |
ช่อง เวอร์ชันทดลอง: ลักษณะการทำงานหรือการมีอยู่ของช่องนี้อาจเปลี่ยนแปลงได้ในอนาคต |
SHIPMENT_IGNORED |
ช่อง เวอร์ชันทดลอง: ลักษณะการทำงานหรือการมีอยู่ของช่องนี้อาจเปลี่ยนแปลงได้ในอนาคต |
SKIPPED_IN_INJECTED_SOLUTION_CONSTRAINT |
ระบบจะข้ามการจัดส่งใน เวอร์ชันทดลอง: ลักษณะการทำงานหรือการมีอยู่ของช่องนี้อาจเปลี่ยนแปลงได้ในอนาคต |
VEHICLE_ROUTE_IS_FULLY_SEQUENCE_CONSTRAINED |
การผ่อนปรนเส้นทางของยานพาหนะที่ระบุใน เวอร์ชันทดลอง: ลักษณะการทำงานหรือการมีอยู่ของช่องนี้อาจเปลี่ยนแปลงได้ในอนาคต |
ZERO_PENALTY_COST |
การจัดส่งมีค่าใช้จ่ายในการปรับเป็น 0 แม้ว่าวิธีนี้จะมีประโยชน์ในฐานะตัวเลือกการสร้างโมเดลขั้นสูง แต่ก็อาจอธิบายได้ว่าเหตุใดจึงมีการข้ามการจัดส่งหลังจากที่เกิดขึ้นแล้ว เวอร์ชันทดลอง: ลักษณะการทำงานหรือการมีอยู่ของช่องนี้อาจเปลี่ยนแปลงในอนาคต |
TimeWindow
กรอบเวลาจะจำกัดเวลาของเหตุการณ์ เช่น เวลาที่มาถึงในการเข้าชม หรือเวลาเริ่มต้นและสิ้นสุดของยานพาหนะ
ขอบเขตกรอบเวลาแบบเข้มงวด start_time และ end_time จะบังคับใช้เวลาเร็วที่สุดและช้าที่สุดของเหตุการณ์ เช่น start_time <= event_time <=
end_time ขอบเขตล่างของกรอบเวลาแบบยืดหยุ่น soft_start_time แสดงค่ากำหนดสำหรับเหตุการณ์ที่จะเกิดขึ้น ณ เวลาหรือหลังเวลา soft_start_time โดยมีค่าใช้จ่ายตามสัดส่วนของระยะเวลาก่อน soft_start_time ที่เหตุการณ์เกิดขึ้น ขอบเขตบนของกรอบเวลาแบบยืดหยุ่น soft_end_time แสดงค่ากำหนดสำหรับเหตุการณ์ที่จะเกิดขึ้น ณ เวลาหรือก่อนเวลา soft_end_time โดยมีค่าใช้จ่ายตามสัดส่วนของระยะเวลาหลังจากที่เหตุการณ์ soft_end_time เกิดขึ้น start_time, end_time, soft_start_time และ soft_end_time ควรอยู่ภายในขีดจำกัดเวลาทั่วโลก (ดู ShipmentModel.global_start_time และ ShipmentModel.global_end_time) และควรเป็นไปตามข้อกำหนดต่อไปนี้
0 <= `start_time` <= `end_time` and
0 <= `start_time` <= `soft_start_time` and
0 <= `soft_end_time` <= `end_time`.
| ช่อง | |
|---|---|
start_time |
เวลาเริ่มต้นของกรอบเวลาที่เข้มงวด หากไม่ได้ระบุ ระบบจะตั้งค่าเป็น |
end_time |
เวลาสิ้นสุดของกรอบเวลาที่เข้มงวด หากไม่ได้ระบุ ระบบจะตั้งค่าเป็น |
soft_start_time |
เวลาเริ่มต้นแบบซอฟต์ของกรอบเวลา |
soft_end_time |
เวลาสิ้นสุดแบบยืดหยุ่นของกรอบเวลา |
cost_per_hour_before_soft_start_time |
ต้นทุนต่อชั่วโมงที่เพิ่มลงในต้นทุนอื่นๆ ในโมเดลหากเหตุการณ์เกิดขึ้นก่อน soft_start_time ซึ่งคํานวณได้ดังนี้ ค่าใช้จ่ายนี้ต้องเป็นจำนวนบวก และจะตั้งค่าช่องนี้ได้ก็ต่อเมื่อตั้งค่า soft_start_time ไว้แล้วเท่านั้น |
cost_per_hour_after_soft_end_time |
ต้นทุนต่อชั่วโมงที่เพิ่มลงในต้นทุนอื่นๆ ในโมเดลหากเหตุการณ์เกิดขึ้นหลังจาก ค่าใช้จ่ายนี้ต้องเป็นจำนวนบวก และจะตั้งค่าช่องนี้ได้ก็ต่อเมื่อตั้งค่า |
TransitionAttributes
ระบุแอตทริบิวต์ของการเปลี่ยนผ่านระหว่างการเข้าชม 2 ครั้งติดต่อกันในเส้นทาง TransitionAttributes หลายรายการอาจมีผลกับการเปลี่ยนสถานะเดียวกัน ในกรณีนี้ ค่าใช้จ่ายเพิ่มเติมทั้งหมดจะรวมกัน และจะใช้ข้อจำกัดหรือขีดจำกัดที่เข้มงวดที่สุด (ตามความหมาย "AND" ตามธรรมชาติ)
| ช่อง | |
|---|---|
src_tag |
แท็กที่กำหนดชุดการเปลี่ยนสถานะ (src->dst) ที่แอตทริบิวต์เหล่านี้ใช้ การเข้าชมหรือการสตาร์ทยานพาหนะต้นทางจะตรงกันก็ต่อเมื่อ |
excluded_src_tag |
ดู |
dst_tag |
การเข้าชมจุดหมายหรือจุดสิ้นสุดของยานพาหนะจะตรงกันก็ต่อเมื่อ |
excluded_dst_tag |
ดู |
cost |
ระบุค่าใช้จ่ายในการเปลี่ยนสถานะนี้ ซึ่งอยู่ในหน่วยเดียวกับต้นทุนอื่นๆ ทั้งหมดในโมเดลและต้องไม่เป็นค่าลบ โดยจะนำไปใช้เพิ่มเติมจากค่าใช้จ่ายอื่นๆ ที่มีอยู่ทั้งหมด |
cost_per_kilometer |
ระบุต้นทุนต่อกิโลเมตรที่ใช้กับระยะทางที่เดินทางขณะทำการเปลี่ยนนี้ ซึ่งจะรวมกับ |
distance_limit |
ระบุขีดจำกัดของระยะทางที่เดินทางขณะทำการเปลี่ยนนี้ ตั้งแต่เดือนมิถุนายน 2021 เป็นต้นไป ระบบจะรองรับเฉพาะขีดจำกัดแบบยืดหยุ่นเท่านั้น |
delay |
ระบุความล่าช้าที่เกิดขึ้นเมื่อทำการเปลี่ยนนี้ ความล่าช้านี้จะเกิดขึ้นหลังจากการเข้าชมต้นทางสิ้นสุดลงและก่อนการเข้าชมปลายทางจะเริ่มต้นขึ้นเสมอ |
อูรี
Uniform Resource Identifier (URI) ที่ชี้ไปยังทรัพยากรที่ Route Optimization API อ่านและเขียนได้
| ช่อง | |
|---|---|
uri |
URI ของทรัพยากร ทรัพยากรอาจยังไม่มีอยู่ เนื้อหาของทรัพยากรจะเข้ารหัสเป็น JSON หรือ textproto รองรับเฉพาะทรัพยากร Google Cloud Storage เท่านั้น หากทรัพยากรได้รับการเข้ารหัสเป็น JSON ชื่อทรัพยากรต้องลงท้ายด้วย |
ยานพาหนะ
จำลองยานพาหนะในปัญหาการจัดส่ง การแก้ปัญหาการจัดส่งจะสร้างเส้นทางที่เริ่มต้นจาก start_location และสิ้นสุดที่ end_location สำหรับยานพาหนะนี้ เส้นทางคือลำดับการเข้าชม (ดู ShipmentRoute)
| ช่อง | |
|---|---|
display_name |
ชื่อที่แสดงของยานพาหนะที่ผู้ใช้กำหนด โดยมีความยาวได้สูงสุด 63 อักขระ และอาจใช้อักขระ UTF-8 |
travel_mode |
โหมดการเดินทางซึ่งส่งผลต่อถนนที่ยานพาหนะใช้ได้และความเร็วของยานพาหนะ ดูเพิ่มเติมที่ |
route_modifiers |
ชุดเงื่อนไขที่ต้องเป็นไปตามที่กำหนดซึ่งส่งผลต่อวิธีคำนวณเส้นทางสำหรับยานพาหนะที่ระบุ |
start_location |
สถานที่ตั้งทางภูมิศาสตร์ที่ยานพาหนะเริ่มต้นก่อนรับการจัดส่ง หากไม่ได้ระบุ ยานพาหนะจะเริ่มที่จุดรับแรก หากโมเดลการจัดส่งมีเมทริกซ์ระยะเวลาและเมทริกซ์ระยะทาง จะต้องไม่ระบุ |
start_waypoint |
จุดอ้างอิงที่แสดงสถานที่ตั้งทางภูมิศาสตร์ที่ยานพาหนะเริ่มต้นก่อนรับการจัดส่ง หากไม่ได้ระบุทั้ง |
end_location |
สถานที่ตั้งทางภูมิศาสตร์ที่ยานพาหนะสิ้นสุดการเดินทางหลังจากเสร็จสิ้น |
end_waypoint |
จุดอ้างอิงที่แสดงสถานที่ตั้งทางภูมิศาสตร์ที่ยานพาหนะสิ้นสุดการเดินทางหลังจากเสร็จสิ้น |
start_tags[] |
ระบุแท็กที่แนบมากับจุดเริ่มต้นของเส้นทางของยานพาหนะ ไม่อนุญาตให้ใช้สตริงที่ว่างเปล่าหรือซ้ำกัน |
end_tags[] |
ระบุแท็กที่แนบกับจุดสิ้นสุดของเส้นทางของยานพาหนะ ไม่อนุญาตให้ใช้สตริงที่ว่างเปล่าหรือซ้ำกัน |
start_time_windows[] |
กรอบเวลาที่ยานพาหนะอาจออกจากสถานที่เริ่มต้น โดยต้องอยู่ภายในขีดจำกัดเวลาส่วนกลาง (ดูช่อง กรอบเวลาที่อยู่ในฟิลด์ที่ซ้ำได้เดียวกันต้องไม่ทับซ้อนกัน กล่าวคือ กรอบเวลาต้องไม่ทับซ้อนกันหรืออยู่ติดกัน และต้องเรียงตามลำดับเวลา คุณจะตั้งค่า |
end_time_windows[] |
กรอบเวลาที่ยานพาหนะอาจมาถึงสถานที่ปลายทาง โดยต้องอยู่ภายในขีดจำกัดเวลาส่วนกลาง (ดูช่อง กรอบเวลาที่อยู่ในฟิลด์ที่ซ้ำได้เดียวกันต้องไม่ทับซ้อนกัน กล่าวคือ กรอบเวลาต้องไม่ทับซ้อนกันหรืออยู่ติดกัน และต้องเรียงตามลำดับเวลา คุณจะตั้งค่า |
unloading_policy |
มีการบังคับใช้นโยบายการนำออกในยานพาหนะ |
load_limits |
ความจุของยานพาหนะ (เช่น น้ำหนัก ปริมาตร จำนวนพาเลท) คีย์ในแผนที่คือตัวระบุประเภทของภาระงาน ซึ่งสอดคล้องกับคีย์ของช่อง |
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 |
ระบุแผนที่จากสตริง visit_types ไปยังระยะเวลา ระยะเวลาคือเวลาที่เพิ่มจาก หากคำขอเข้าชมมีหลายประเภท ระบบจะเพิ่มระยะเวลาสำหรับแต่ละประเภทในแผนที่ |
break_rule |
อธิบายกำหนดการหยุดพักที่จะบังคับใช้กับยานพาหนะนี้ หากเว้นว่างไว้ ระบบจะไม่กำหนดเวลาพักสำหรับยานพาหนะนี้ |
label |
ระบุป้ายกำกับสำหรับยานพาหนะนี้ ป้ายกำกับนี้จะแสดงในคำตอบเป็น |
ignore |
หากเป็นจริง หากการจัดส่งดำเนินการโดยยานพาหนะที่ละเว้นใน หากการจัดส่งดำเนินการโดยยานพาหนะที่ถูกละเว้นใน |
travel_duration_multiple |
ระบุปัจจัยการคูณที่ใช้เพิ่มหรือลดระยะเวลาเดินทางของยานพาหนะนี้ได้ เช่น การตั้งค่านี้เป็น 2.0 หมายความว่ายานพาหนะนี้ช้ากว่าและมีระยะเวลาเดินทางเป็น 2 เท่าของยานพาหนะมาตรฐาน ตัวคูณนี้ไม่ส่งผลต่อระยะเวลาการเข้าชม แต่จะส่งผลต่อค่าใช้จ่ายหากมีการระบุ คำเตือน: ระยะเวลาเดินทางจะปัดเศษเป็นวินาทีที่ใกล้ที่สุดหลังจากใช้ตัวคูณนี้ แต่ก่อนที่จะดำเนินการทางตัวเลข ดังนั้นตัวคูณขนาดเล็กอาจส่งผลให้ความแม่นยำลดลง ดูข้อมูลเพิ่มเติมเกี่ยวกับ |
DurationLimit
ขีดจำกัดที่กำหนดระยะเวลาสูงสุดของเส้นทางของยานพาหนะ โดยอาจเป็นแบบแข็งหรือแบบอ่อนก็ได้
เมื่อมีการกำหนดช่องขีดจำกัดแบบยืดหยุ่น คุณต้องกำหนดทั้งเกณฑ์สูงสุดแบบยืดหยุ่นและค่าใช้จ่ายที่เกี่ยวข้องร่วมกัน
| ช่อง | |
|---|---|
max_duration |
ขีดจำกัดที่เข้มงวดซึ่งจำกัดระยะเวลาให้ไม่เกิน max_duration |
soft_max_duration |
ขีดจำกัดแบบยืดหยุ่นซึ่งไม่ได้บังคับใช้ขีดจำกัดระยะเวลาสูงสุด แต่เมื่อละเมิดจะทำให้เส้นทางมีค่าใช้จ่าย ต้นทุนนี้จะรวมกับต้นทุนอื่นๆ ที่กำหนดไว้ในโมเดล โดยมีหน่วยเดียวกัน หากกำหนดไว้ |
quadratic_soft_max_duration |
ขีดจำกัดแบบยืดหยุ่นซึ่งไม่ได้บังคับใช้ขีดจำกัดระยะเวลาสูงสุด แต่เมื่อละเมิดจะทำให้เส้นทางมีค่าใช้จ่ายเป็นกำลังสองของระยะเวลา ต้นทุนนี้จะรวมกับต้นทุนอื่นๆ ที่กำหนดไว้ในโมเดล โดยมีหน่วยเดียวกัน หากตั้งค่า
|
cost_per_hour_after_soft_max |
ต้นทุนต่อชั่วโมงที่เกิดขึ้นหากละเมิดเกณฑ์ ค่าใช้จ่ายต้องไม่ติดลบ |
cost_per_square_hour_after_quadratic_soft_max |
ต้นทุนต่อตารางชั่วโมงที่เกิดขึ้นหากละเมิดเกณฑ์ ค่าใช้จ่ายเพิ่มเติมจะเป็น 0 หากระยะเวลาต่ำกว่าเกณฑ์ ไม่เช่นนั้นค่าใช้จ่ายจะขึ้นอยู่กับระยะเวลาดังนี้ ค่าใช้จ่ายต้องไม่ติดลบ |
LoadLimit
กำหนดขีดจำกัดน้ำหนักบรรทุกที่ใช้กับยานพาหนะ เช่น "รถบรรทุกคันนี้บรรทุกได้สูงสุด 3, 500 กก." ดูload_limits
| ช่อง | |
|---|---|
soft_max_load |
ขีดจำกัดแบบไม่เข้มงวดของภาระงาน ดู |
cost_per_unit_above_soft_max |
หากน้ำหนักบรรทุกเกิน |
start_load_interval |
ช่วงโหลดที่ยอมรับได้ของยานพาหนะที่จุดเริ่มต้นของเส้นทาง |
end_load_interval |
ช่วงการโหลดที่ยอมรับได้ของยานพาหนะที่จุดสิ้นสุดของเส้นทาง |
max_load |
ปริมาณโหลดสูงสุดที่ยอมรับได้ |
cost_per_kilometer |
ต้นทุนในการเคลื่อนย้ายน้ำหนักบรรทุก 1 หน่วยเป็นระยะทาง 1 กิโลเมตรสำหรับยานพาหนะนี้ ซึ่งสามารถใช้เป็นพร็อกซีสำหรับการใช้เชื้อเพลิงได้ โดยหากโหลดเป็นน้ำหนัก (หน่วยนิวตัน) โหลด*กิโลเมตรจะมีมิติของพลังงาน เวอร์ชันทดลอง: ดูรายละเอียดเพิ่มเติมได้ที่ https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request |
cost_per_traveled_hour |
ต้นทุนการเดินทางพร้อมหน่วยน้ำหนักบรรทุกในช่วง 1 ชั่วโมงสำหรับยานพาหนะนี้ เวอร์ชันทดลอง: ดูรายละเอียดเพิ่มเติมได้ที่ https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request |
ช่วงเวลา
ช่วงของจำนวนโหลดที่ยอมรับได้
| ช่อง | |
|---|---|
min |
โหลดขั้นต่ำที่ยอมรับได้ ต้องมีค่า ≥ 0 หากระบุทั้ง 2 รายการ |
max |
ภาระงานสูงสุดที่ยอมรับได้ ต้องมีค่า ≥ 0 หากไม่ได้ระบุ ข้อความนี้จะไม่จำกัดภาระงานสูงสุด หากระบุทั้ง 2 รายการ |
LoadCost
ค่าใช้จ่ายในการเคลื่อนย้ายโหลด 1 หน่วยในช่วงTransition สำหรับภาระงานหนึ่งๆ ต้นทุนคือผลรวมของ 2 ส่วนต่อไปนี้
- min(load,
load_threshold) *cost_per_unit_below_threshold - max(0, load -
load_threshold) *cost_per_unit_above_threshold
เมื่อใช้ต้นทุนนี้ โซลูชันจะเลือกนำส่งความต้องการสูงก่อน หรือเทียบเท่ากับการรับความต้องการสูงเป็นลำดับสุดท้าย เช่น หากยานพาหนะมีลักษณะดังนี้
load_limit {
key: "weight"
value {
cost_per_kilometer {
load_threshold: 15
cost_per_unit_below_threshold: 2.0
cost_per_unit_above_threshold: 10.0
}
}
}
และเส้นทางคือเริ่มต้น,รับ,รับ,นำส่ง,นำส่ง,สิ้นสุด โดยมีการเปลี่ยนผ่านดังนี้
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 20 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 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
อย่างไรก็ตาม หากเส้นทางคือ เริ่มต้น, รับ, นำส่ง, รับ, นำส่ง, สิ้นสุด โดยมีการเปลี่ยนผ่าน
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 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
| ช่อง | |
|---|---|
load_threshold |
ปริมาณโหลดที่สูงกว่าต้นทุนในการย้ายหน่วยโหลดจะเปลี่ยนจาก cost_per_unit_below_threshold เป็น cost_per_unit_above_threshold ต้องมีค่ามากกว่าหรือเท่ากับ 0 |
cost_per_unit_below_threshold |
ต้นทุนในการเคลื่อนย้ายหน่วยโหลดสำหรับแต่ละหน่วยระหว่าง 0 ถึงเกณฑ์ ต้องเป็นค่าจำกัด และ >= 0 |
cost_per_unit_above_threshold |
ต้นทุนในการย้ายหน่วยของโหลดสำหรับแต่ละหน่วยที่เกินเกณฑ์ ในกรณีพิเศษที่เกณฑ์ = 0 ค่าใช้จ่ายนี้จะเป็นค่าใช้จ่ายคงที่ต่อหน่วย ต้องเป็นค่าจำกัด และ >= 0 |
TravelMode
โหมดยานพาหนะที่ยานพาหนะใช้ได้
ซึ่งควรเป็นชุดย่อยของรูปแบบการเดินทางใน Routes API ของ Google Maps Platform โปรดดูที่ https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteTravelMode
หมายเหตุ: เส้นทางWALKINGอยู่ในเวอร์ชันเบต้า และบางครั้งอาจไม่มีทางเท้าหรือทางเดินเท้าที่ชัดเจน คุณต้องแสดงคำเตือนนี้แก่ผู้ใช้สำหรับเส้นทางการเดินทั้งหมดที่แสดงในแอป
| Enum | |
|---|---|
TRAVEL_MODE_UNSPECIFIED |
รูปแบบการเดินทางที่ไม่ได้ระบุ เทียบเท่ากับ DRIVING |
DRIVING |
โหมดการเดินทางที่สอดคล้องกับเส้นทางการขับขี่ (รถยนต์...) |
WALKING |
โหมดการเดินทางที่สอดคล้องกับเส้นทางเดินเท้า |
UnloadingPolicy
นโยบายเกี่ยวกับวิธีนำยานพาหนะออกจากเรือ ใช้กับการจัดส่งที่มีทั้งการรับสินค้าและการนำส่งเท่านั้น
การจัดส่งอื่นๆ สามารถเกิดขึ้นที่ใดก็ได้ในเส้นทางโดยไม่ขึ้นอยู่กับ unloading_policy
| Enum | |
|---|---|
UNLOADING_POLICY_UNSPECIFIED |
นโยบายการนำออกที่ไม่ได้ระบุ การนำส่งต้องเกิดขึ้นหลังจากการรับที่เกี่ยวข้องเท่านั้น |
LAST_IN_FIRST_OUT |
การนำส่งต้องเกิดขึ้นในลำดับย้อนกลับของการรับสินค้า |
FIRST_IN_FIRST_OUT |
การนำส่งต้องเกิดขึ้นตามลำดับเดียวกับการรับสินค้า |
VehicleFullness
VehicleFullness คือเมตริกที่คำนวณว่ายานพาหนะเต็มเพียงใด ช่อง VehicleFullness แต่ละช่องมีค่าระหว่าง 0 ถึง 1 โดยคำนวณเป็นอัตราส่วนระหว่างช่องเมตริกที่จำกัด (เช่น AggregatedMetrics.travel_distance_meters) กับขีดจำกัดของยานพาหนะที่เกี่ยวข้อง (เช่น Vehicle.route_distance_limit) หากมี ไม่เช่นนั้น ระบบจะไม่ตั้งค่าอัตราส่วนความเต็ม หากขีดจำกัดเป็น 0 ระบบจะตั้งค่าช่องเป็น 1 หมายเหตุ: เมื่อเส้นทางมีความเป็นไปไม่ได้ด้านการจราจร อัตราส่วนความเต็มดิบบางรายการอาจเกิน 1.0 เช่น ยานพาหนะอาจเกินขีดจำกัดระยะทาง ในกรณีเหล่านี้ เราจะจำกัดค่าความเต็มไว้ที่ 1.0
| ช่อง | |
|---|---|
max_fullness |
จำนวนสูงสุดของฟิลด์อื่นๆ ทั้งหมดในข้อความนี้ |
distance |
อัตราส่วนระหว่าง |
travel_duration |
อัตราส่วนระหว่าง [AggregatedMetrics.travel_duration_seconds][] กับ |
active_duration |
อัตราส่วนระหว่าง [AggregatedMetrics.total_duration_seconds][] และ |
max_load |
อัตราส่วนสูงสุดในบรรดา [AggregatedMetrics.max_load][] ทุกประเภทและ |
active_span |
อัตราส่วน (vehicle_end_time - vehicle_start_time) / (latest_vehicle_end_time - earliest_vehicle_start_time) สำหรับยานพาหนะที่กำหนด หากไม่มีตัวส่วน ระบบจะใช้ ( |
จุดบอกทาง
รวมจุดอ้างอิง จุดอ้างอิงจะทำเครื่องหมายสถานที่ที่มาถึงและสถานที่ที่ออกเดินทางของ VisitRequest รวมถึงสถานที่เริ่มต้นและสถานที่สิ้นสุดของยานพาหนะ
| ช่อง | |
|---|---|
side_of_road |
ไม่บังคับ ระบุว่าตำแหน่งของจุดอ้างอิงนี้มีไว้เพื่อกำหนดค่ากำหนดให้ยานพาหนะหยุดที่ด้านใดด้านหนึ่งของถนน เมื่อตั้งค่านี้ เส้นทางจะผ่านสถานที่เพื่อให้ยานพาหนะสามารถจอดที่ข้างถนนซึ่งสถานที่นั้นเอนเอียงไปจากกึ่งกลางถนน ตัวเลือกนี้ใช้ไม่ได้กับโหมดการเดินทาง "WALKING" |
vehicle_stopover |
ระบุว่าจุดอ้างอิงมีไว้เพื่อให้ยานพาหนะหยุด โดยมีจุดประสงค์เพื่อรับหรือส่งผู้โดยสาร ตัวเลือกนี้ใช้ได้กับโหมดการเดินทาง "DRIVING" และเมื่อ "location_type" เป็น "location" เท่านั้น เวอร์ชันทดลอง: ลักษณะการทำงานหรือการมีอยู่ของช่องนี้อาจเปลี่ยนแปลงในอนาคต |
ฟิลด์ Union location_type วิธีต่างๆ ในการแสดงสถานที่ตั้ง location_type ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น |
|
location |
จุดที่ระบุโดยใช้พิกัดทางภูมิศาสตร์ รวมถึงส่วนหัวที่ไม่บังคับ |
place_id |
รหัสสถานที่ของจุดที่น่าสนใจที่เชื่อมโยงกับจุดอ้างอิง เมื่อใช้รหัสสถานที่เพื่อระบุสถานที่มาถึงหรือสถานที่ออกเดินทางของ VisitRequest ให้ใช้รหัสสถานที่ที่เจาะจงพอที่จะระบุตำแหน่ง LatLng สำหรับการนำทางไปยังสถานที่นั้น เช่น รหัสสถานที่ที่แสดงถึงอาคารนั้นเหมาะสม แต่ไม่แนะนำให้ใช้รหัสสถานที่ที่แสดงถึงถนน |