ดัชนี
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(ข้อความ)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]
- ต้องยกเลิกการตั้งค่านาโนวินาทีหรือตั้งค่าเป็น 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) ระบบจะอ่านอินพุตสำหรับการเพิ่มประสิทธิภาพ (ข้อความ ผู้ใช้สามารถสำรวจ หากฟิลด์ LRO หากฟิลด์
|
| OptimizeTours |
|---|
|
ส่ง
เป้าหมายคือการกำหนด
|
| OptimizeToursLongRunning |
|---|
|
นี่คือรูปแบบของ
เวอร์ชันทดลอง: ดูรายละเอียดเพิ่มเติมได้ที่ https://developers.google.com/maps/tt/route-optimization/experimental/otlr/make-request
|
| OptimizeToursUri |
|---|
|
ซึ่งเป็นรูปแบบหนึ่งของเมธอด ไคลเอ็นต์จะระบุ URI ของ ควรใช้วิธีนี้แทนวิธี
เวอร์ชันทดลอง: ดูรายละเอียดเพิ่มเติมได้ที่ https://developers.google.com/maps/tt/route-optimization/experimental/otlr/make-request
|
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
ข้อมูลสำหรับการแก้โมเดลการเพิ่มประสิทธิภาพแบบอะซิงโครนัส
| ช่อง | |
|---|---|
display_name |
ไม่บังคับ ชื่อโมเดลที่ผู้ใช้กำหนด ซึ่งผู้ใช้สามารถใช้เป็นชื่อแทนเพื่อติดตามโมเดลได้ |
input_config |
ต้องระบุ ข้อมูลเกี่ยวกับโมเดลอินพุต |
output_config |
ต้องระบุ ข้อมูลตำแหน่งเอาต์พุตที่ต้องการ |
BatchOptimizeToursResponse
ประเภทนี้ไม่มีฟิลด์
การตอบกลับ BatchOptimizeToursRequest ซึ่งจะแสดงใน Long Running Operation หลังจากที่การดำเนินการเสร็จสมบูรณ์
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 เป็น false ในโมเดล)
relaxations(i).level ระบุระดับการผ่อนปรนข้อจำกัดที่ใช้กับการเข้าชม #j ซึ่งเป็นไปตามเงื่อนไขต่อไปนี้
route.visits(j).start_time >= relaxations(i).threshold_timeและj + 1 >= relaxations(i).threshold_visit_count
ในทำนองเดียวกัน การสตาร์ทรถจะผ่อนปรนเป็น relaxations(i).level หากเป็นไปตามเงื่อนไขต่อไปนี้
vehicle_start_time >= relaxations(i).threshold_timeและrelaxations(i).threshold_visit_count == 0และส่วนท้ายของยานพาหนะจะผ่อนปรนเป็นrelaxations(i).levelหากเป็นไปตามเงื่อนไขต่อไปนี้vehicle_end_time >= relaxations(i).threshold_timeและroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
หากต้องการใช้ระดับการผ่อนปรนในกรณีที่การเข้าชมตรงตามthreshold_visit_countหรือthreshold_time ให้เพิ่ม 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 |
เข็มทิศที่เชื่อมโยงกับทิศทางการไหลของการเข้าชม ค่านี้ใช้เพื่อระบุฝั่งของถนนที่จะใช้สำหรับการรับและส่ง ค่า 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 |
หากตั้งค่านี้ไว้ คำขอจะมีกำหนดเวลาได้สูงสุด 60 นาที (ดู https://grpc.io/blog/deadlines) ไม่เช่นนั้น กำหนดเวลาสูงสุดจะอยู่ที่ 30 นาทีเท่านั้น โปรดทราบว่าคำขอที่ใช้งานเป็นเวลานานมีความเสี่ยงที่จะถูกขัดจังหวะสูงกว่าอย่างมาก (แต่ก็ยังถือว่าน้อย) |
use_geodesic_distances |
หากเป็นจริง ระบบจะคำนวณระยะทางการเดินทางโดยใช้ระยะทาง Geodesic แทนระยะทางของ Google Maps และจะคำนวณเวลาเดินทางโดยใช้ระยะทาง Geodesic ที่มีความเร็วซึ่งกำหนดโดย |
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 |
ต้นทุนของโซลูชันที่แยกย่อยตามช่องคำขอที่เกี่ยวข้องกับต้นทุน คีย์คือเส้นทาง Proto ที่สัมพันธ์กับ OptimizeToursRequest อินพุต เช่น "model.shipments.pickups.cost" และค่าคือต้นทุนทั้งหมดที่สร้างขึ้นโดยฟิลด์ต้นทุนที่เกี่ยวข้อง ซึ่งรวบรวมไว้ในโซลูชันทั้งหมด กล่าวคือ costs["model.shipments.pickups.cost"] คือผลรวมของต้นทุนการรับสินค้าทั้งหมดในโซลูชัน ต้นทุนทั้งหมดที่กําหนดไว้ในโมเดลจะรายงานอย่างละเอียดที่นี่ ยกเว้นต้นทุนที่เกี่ยวข้องกับ TransitionAttributes ซึ่งจะรายงานในลักษณะรวมเท่านั้น ณ วันที่ 01/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 |
สตริงที่มนุษย์อ่านได้ซึ่งอธิบายถึงข้อผิดพลาด ความเสถียร: ไม่เสถียร: ข้อความแสดงข้อผิดพลาดที่เชื่อมโยงกับ |
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" เป็นต้น หากคีย์ที่ระบุไม่ปรากฏในแผนที่ ระบบจะถือว่าการโหลดที่เกี่ยวข้องเป็นค่าว่าง |
allowed_vehicle_indices[] |
ชุดยานพาหนะที่อาจทำการจัดส่งนี้ หากเว้นว่างไว้ รถทุกคันจะดำเนินการนี้ได้ ยานพาหนะจะระบุตามดัชนีในรายการ |
costs_per_vehicle[] |
ระบุค่าใช้จ่ายที่เกิดขึ้นเมื่อยานพาหนะแต่ละคันนำส่งการจัดส่งนี้ หากระบุ จะต้องมีอย่างใดอย่างหนึ่งต่อไปนี้
ต้นทุนเหล่านี้ต้องอยู่ในหน่วยเดียวกันกับ |
costs_per_vehicle_indices[] |
ดัชนีของยานพาหนะที่ |
pickup_to_delivery_absolute_detour_limit |
ระบุเวลาอ้อมสูงสุดแบบสัมบูรณ์เมื่อเทียบกับเส้นทางที่สั้นที่สุดจากจุดรับไปยังจุดนำส่ง หากระบุ ต้องเป็นค่าที่ไม่เป็นลบ และการจัดส่งต้องมีการรับสินค้าและการนำส่งอย่างน้อย ตัวอย่างเช่น ให้ t เป็นเวลาที่สั้นที่สุดในการเดินทางจากทางเลือกในการรับสินค้าที่เลือกไปยังทางเลือกในการนำส่งที่เลือกโดยตรง จากนั้นการตั้งค่า หากมีการระบุทั้งขีดจำกัดแบบสัมพัทธ์และแบบสัมบูรณ์ในการจัดส่งเดียวกัน ระบบจะใช้ขีดจำกัดที่จำกัดมากกว่าสำหรับคู่การรับ/นำส่งที่เป็นไปได้แต่ละคู่ ตั้งแต่เดือนตุลาคม 2017 เป็นต้นมา ระบบจะรองรับการอ้อมเมื่อระยะเวลาการเดินทางไม่ขึ้นอยู่กับยานพาหนะเท่านั้น |
pickup_to_delivery_time_limit |
ระบุระยะเวลาสูงสุดตั้งแต่เริ่มรับสินค้าจนถึงเริ่มนำส่งสินค้า หากระบุ ต้องเป็นค่าที่ไม่เป็นลบ และการจัดส่งต้องมีการรับสินค้าและการนำส่งอย่างน้อย โดยไม่ขึ้นอยู่กับทางเลือกที่เลือกสำหรับการรับและการนำส่ง หรือความเร็วของยานพาหนะ คุณระบุข้อจำกัดนี้ควบคู่ไปกับข้อจำกัดการอ้อมสูงสุดได้ โดยโซลูชันจะคำนึงถึงข้อกำหนดทั้ง 2 รายการ |
shipment_type |
สตริงที่ไม่ว่างเปล่าซึ่งระบุ "ประเภท" สำหรับการจัดส่งนี้ ฟีเจอร์นี้ใช้เพื่อกำหนดความเข้ากันไม่ได้หรือข้อกำหนดระหว่าง แตกต่างจาก |
label |
ระบุป้ายกำกับการจัดส่งนี้ ระบบจะรายงานป้ายกำกับนี้ในการตอบกลับใน |
ignore |
หากเป็นจริง ให้ข้ามการจัดส่งนี้ แต่ไม่ต้องใช้ การไม่สนใจการจัดส่งจะทำให้เกิดข้อผิดพลาดในการตรวจสอบเมื่อมี ระบบอนุญาตให้ละเว้นการจัดส่งที่ดำเนินการใน |
penalty_cost |
หากการจัดส่งไม่สำเร็จ ระบบจะเพิ่มค่าปรับนี้ลงในต้นทุนโดยรวมของเส้นทาง ระบบจะถือว่าการจัดส่งเสร็จสมบูรณ์หากมีการเข้าชมทางเลือกในการรับและนำส่งอย่างใดอย่างหนึ่ง ต้นทุนอาจแสดงในหน่วยเดียวกันกับที่ใช้สำหรับฟิลด์อื่นๆ ที่เกี่ยวข้องกับต้นทุนในโมเดล และต้องเป็นค่าบวก สำคัญ: หากไม่ได้ระบุค่าปรับนี้ ระบบจะถือว่าไม่มีที่สิ้นสุด นั่นคือต้องดำเนินการจัดส่งให้เสร็จสมบูรณ์ |
pickup_to_delivery_relative_detour_limit |
ระบุเวลาอ้อมสูงสุดเมื่อเทียบกับเส้นทางที่สั้นที่สุดจากจุดรับไปยังจุดนำส่ง หากระบุ ต้องเป็นค่าที่ไม่เป็นลบ และการจัดส่งต้องมีการรับสินค้าและการนำส่งอย่างน้อย ตัวอย่างเช่น ให้ 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 |
ออฟเซ็ตระหว่างเหตุการณ์ "แรก" กับเหตุการณ์ "ที่สอง" ซึ่งอาจเป็นค่าลบได้ |
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
สุดท้ายนี้ เรามาดูวิธีจัดเรียง TRAVEL, BREAKS, DELAY และ WAIT ในระหว่างการเปลี่ยนผ่านกัน
- โดยทั้ง 2 ส่วนจะไม่ทับซ้อนกัน
- DELAY ต้องไม่ซ้ำกันและต้องเป็นระยะเวลาต่อเนื่องก่อนการเข้าชมครั้งถัดไป (หรือสิ้นสุดยานพาหนะ) ดังนั้น คุณเพียงแค่ทราบระยะเวลาการเลื่อนเพื่อทราบเวลาเริ่มต้นและเวลาสิ้นสุด
- ช่วงพักคือช่วงเวลาที่ต่อเนื่องกันและไม่ทับซ้อนกัน การตอบกลับจะระบุเวลาเริ่มต้นและระยะเวลาของช่วงพักแต่ละช่วง
- สถานะ 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 |
ต้นทุนของเส้นทางที่แยกย่อยตามช่องคำขอที่เกี่ยวข้องกับต้นทุน คีย์คือเส้นทาง Proto ที่สัมพันธ์กับ OptimizeToursRequest ที่ป้อน เช่น "model.shipments.pickups.cost" และค่าคือต้นทุนทั้งหมดที่สร้างขึ้นโดยฟิลด์ต้นทุนที่เกี่ยวข้อง ซึ่งรวบรวมไว้ในเส้นทางทั้งหมด กล่าวคือ costs["model.shipments.pickups.cost"] คือผลรวมของต้นทุนการรับสินค้าทั้งหมดในเส้นทาง ต้นทุนทั้งหมดที่กําหนดไว้ในโมเดลจะรายงานอย่างละเอียดที่นี่ ยกเว้นต้นทุนที่เกี่ยวข้องกับ TransitionAttributes ซึ่งจะรายงานในลักษณะรวมเท่านั้น ณ วันที่ 01/2022 |
route_total_cost |
ต้นทุนรวมของเส้นทาง ผลรวมของค่าใช้จ่ายทั้งหมดในแผนที่ต้นทุน |
พัก
ข้อมูลที่แสดงการดำเนินการของช่วงพัก
| ช่อง | |
|---|---|
start_time |
เวลาเริ่มต้นของช่วงพัก |
duration |
ระยะเวลาของช่วงพัก |
EncodedPolyline
การแสดงเส้นประกอบที่เข้ารหัส ดูข้อมูลเพิ่มเติมเกี่ยวกับการเข้ารหัส Polyline ได้ที่ 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 |
สำเนาของ |
injected_solution_location_token |
โทเค็นทึบแสงที่แสดงข้อมูลเกี่ยวกับสถานที่ที่เข้าชม ระบบอาจป้อนข้อมูลในช่องนี้ในการเข้าชมเส้นทางผลลัพธ์เมื่อตั้งค่า ทดลอง: ดูรายละเอียดเพิ่มเติมได้ที่ https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request |
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 |
หากเหตุผลเกี่ยวข้องกับการจัดส่งที่เข้ากันไม่ได้กับยานพาหนะ ฟิลด์นี้จะแสดงดัชนีของยานพาหนะที่เกี่ยวข้อง |
รหัส
รหัสที่ระบุประเภทเหตุผล ลำดับที่แสดงไม่มีความหมาย โดยเฉพาะอย่างยิ่ง จะไม่มีการระบุว่าเหตุผลใดจะปรากฏก่อนในโซลูชัน หากทั้ง 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 |
เวลาขั้นต่ำที่จำเป็นในการดำเนินการจัดส่งนี้ ซึ่งรวมถึงเวลาเดินทาง เวลาที่ต้องรอ และเวลาให้บริการ เกินกว่า หมายเหตุ: ระบบจะคำนวณเวลาเดินทางในกรณีที่ดีที่สุด นั่นคือ ระยะทางแบบ Geodesic 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 หลายรายการอาจมีผลกับการเปลี่ยนผ่านเดียวกัน ในกรณีนี้ ค่าใช้จ่ายเพิ่มเติมทั้งหมดจะรวมกัน และข้อจำกัดหรือขีดจำกัดที่เข้มงวดที่สุดจะมีผล (ตามความหมายของ "และ" ตามธรรมชาติ)
| ช่อง | |
|---|---|
src_tag |
แท็กที่กำหนดชุดการเปลี่ยน (src->dst) ที่แอตทริบิวต์เหล่านี้ใช้ การเข้าชมแหล่งที่มาหรือการเริ่มต้นยานพาหนะจะตรงกันก็ต่อเมื่อ |
excluded_src_tag |
ดู |
dst_tag |
การเข้าชมปลายทางหรือการสิ้นสุดของยานพาหนะจะตรงกันก็ต่อเมื่อ |
excluded_dst_tag |
ดู |
cost |
ระบุค่าใช้จ่ายในการดำเนินการเปลี่ยนผ่านนี้ ซึ่งอยู่ในหน่วยเดียวกันกับต้นทุนอื่นๆ ทั้งหมดในโมเดล และต้องไม่ใช่ค่าลบ โดยจะมีการเรียกเก็บเพิ่มเติมจากค่าใช้จ่ายอื่นๆ ที่มีอยู่ทั้งหมด |
cost_per_kilometer |
ระบุต้นทุนต่อกิโลเมตรที่ใช้กับระยะทางที่เดินทางขณะทำการเปลี่ยนผ่านนี้ โดยจะรวมกับ |
distance_limit |
ระบุขีดจำกัดของระยะทางที่เดินทางขณะทำการเปลี่ยนนี้ ตั้งแต่เดือนมิถุนายน 2021 เป็นต้นไป ระบบจะรองรับเฉพาะขีดจำกัดแบบยืดหยุ่น |
delay |
ระบุการหน่วงเวลาที่เกิดขึ้นเมื่อทำการเปลี่ยนผ่านนี้ ความล่าช้านี้จะเกิดขึ้นหลังจากการเข้าชมแหล่งที่มาเสร็จสิ้นและก่อนเริ่มการเข้าชมหน้า Landing Page เสมอ |
อูรี
ตัวระบุทรัพยากรสากลที่ชี้ไปยังทรัพยากรที่ 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 หน่วยเป็นเวลา 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
}
}
}
และเส้นทางคือ start,pickup,pickup,delivery,delivery,end โดยมีการเปลี่ยนเส้นทางดังนี้
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
อย่างไรก็ตาม หากเส้นทางเป็น start,pickup,delivery,pickup,delivery,end โดยมีการเปลี่ยนผ่าน
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
โหมดการเดินทางที่ยานพาหนะใช้ได้
ซึ่งควรเป็นชุดย่อยของโหมดการเดินทางของ Google Maps Platform Routes API ดูที่ 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 |
ไม่บังคับ ระบุว่าจุดอ้างอิงนี้มีไว้เพื่อกำหนดให้ยานพาหนะจอดที่ด้านใดด้านหนึ่งของถนน เมื่อตั้งค่านี้ เส้นทางจะผ่านตำแหน่งเพื่อให้รถหยุดที่ข้างถนนซึ่งตำแหน่งนั้นอยู่ใกล้จากกึ่งกลางถนน ตัวเลือกนี้ใช้ไม่ได้กับโหมดการเดินทาง "เดิน" |
vehicle_stopover |
ระบุว่าจุดแวะพักมีไว้เพื่อให้ยานพาหนะหยุด โดยมีจุดประสงค์เพื่อรับหรือส่ง ตัวเลือกนี้ใช้ได้เฉพาะโหมดการเดินทาง "DRIVING" และเมื่อ "location_type" เป็น "location" ทดลอง: ลักษณะการทำงานหรือการมีอยู่ของฟิลด์นี้อาจมีการเปลี่ยนแปลงในอนาคต |
ฟิลด์ Union location_type วิธีต่างๆ ในการแสดงสถานที่ location_type ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น |
|
location |
จุดที่ระบุโดยใช้พิกัดทางภูมิศาสตร์ รวมถึงส่วนหัวที่ไม่บังคับ |
place_id |
รหัสสถานที่ของจุดสนใจที่เชื่อมโยงกับจุดแวะพัก เมื่อใช้รหัสสถานที่เพื่อระบุสถานที่มาถึงหรือสถานที่ออกเดินทางของ VisitRequest ให้ใช้รหัสสถานที่ที่เฉพาะเจาะจงเพียงพอที่จะกำหนดตำแหน่ง LatLng สำหรับการนำทางไปยังสถานที่นั้น เช่น รหัสสถานที่ที่แสดงถึงอาคารจะเหมาะสม แต่ไม่แนะนำให้ใช้รหัสสถานที่ที่แสดงถึงถนน |