ดัชนี
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]
- ต้องไม่มีการตั้งค่า 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]
- ละติจูดและลองจิจูดต้องไม่เท่ากับ 0 อย่างน้อย 1 ค่า
BatchOptimizeTours |
---|
เพิ่มประสิทธิภาพทัวร์ชมยานพาหนะสำหรับข้อความ เมธอดนี้เป็นการดำเนินการที่ทำงานเป็นเวลานาน (LRO) ระบบจะอ่านอินพุตสำหรับการเพิ่มประสิทธิภาพ (ข้อความ ผู้ใช้สามารถตรวจสอบสถานะของ 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
ข้อมูลสำหรับการแก้ปัญหาโมเดลการเพิ่มประสิทธิภาพ 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 ชั่วโมงอย่างน้อย 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 |
ค่าไม่ถูกต้อง รูปแบบต้องไม่ใช่ "ไม่ได้ระบุ" |
JSON |
รูปแบบออบเจ็กต์ JavaScript |
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
ANDj + 1 >= relaxations(i).threshold_visit_count
ในทำนองเดียวกัน ระบบจะผ่อนปรนการสตาร์ทยานพาหนะเป็น relaxations(i).level
หากมีคุณสมบัติตรงตามข้อกำหนดต่อไปนี้
vehicle_start_time >= relaxations(i).threshold_time
ANDrelaxations(i).threshold_visit_count == 0
และปลายรถจะผ่อนปรนเป็นrelaxations(i).level
หากเป็นไปตามข้อกำหนดต่อไปนี้vehicle_end_time >= relaxations(i).threshold_time
ANDroute.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 |
ต้องระบุ รูปแบบข้อมูลอินพุต |
ฟิลด์สหภาพ 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[] |
หากไม่ใช่ค่าว่าง ระบบจะรีเฟรชเส้นทางที่ระบุโดยไม่แก้ไขลําดับการแวะพักหรือเวลาเดินทางที่อยู่เบื้องหลัง ระบบจะอัปเดตเฉพาะรายละเอียดอื่นๆ เท่านั้น การดำเนินการนี้ไม่ได้แก้ปัญหาโมเดล ในเดือน 11/2020 การดำเนินการนี้จะสร้างเฉพาะรูปหลายเหลี่ยมของเส้นทางที่ไม่ใช่ "ว่าง" และกำหนดให้ ฟิลด์ ห้ามใช้ช่องนี้ร่วมกับ
|
interpret_injected_solutions_using_labels |
เงื่อนไข "เป็นจริง"
การตีความนี้มีผลกับช่อง หากเป็น "จริง" ป้ายกำกับในหมวดหมู่ต่อไปนี้ต้องปรากฏในหมวดหมู่นั้นๆ ไม่เกิน 1 ครั้ง
หาก การนําการเข้าชมเส้นทางหรือทั้งเส้นทางออกจากโซลูชันที่แทรกอาจส่งผลต่อข้อจํากัดโดยนัย ซึ่งอาจทําให้เกิดการเปลี่ยนแปลงโซลูชัน ข้อผิดพลาดในการตรวจสอบ หรือความเป็นไปไม่ได้ หมายเหตุ: ผู้โทรต้องตรวจสอบว่า |
consider_road_traffic |
พิจารณาการประมาณการเข้าชมในการคำนวณช่อง |
populate_polylines |
หากเป็น "จริง" ระบบจะสร้างเส้นประกอบใน |
populate_transition_polylines |
หากเป็น "จริง" ระบบจะป้อนข้อมูลเส้นประกอบและโทเค็นเส้นทางในการตอบกลับ |
allow_large_deadline_despite_interruption_risk |
หากตั้งค่านี้ คำขอจะมีกำหนดเวลา (ดูที่ https://grpc.io/blog/deadlines) ได้สูงสุด 60 นาที ไม่เช่นนั้น กำหนดเวลาสูงสุดคือ 30 นาทีเท่านั้น โปรดทราบว่าคำขอที่มีอายุการใช้งานยาวนานมีความเสี่ยงที่จะหยุดชะงักมากกว่า (แต่ก็ยังถือว่าน้อย) |
use_geodesic_distances |
หากเป็นจริง ระบบจะคํานวณระยะทางในการเดินทางโดยใช้ระยะทางตามเส้นโค้งโลกแทนระยะทางของ Google Maps และคำนวณเวลาในการเดินทางโดยใช้ระยะทางตามเส้นโค้งโลกที่มีความเร็วที่ระบุโดย |
label |
ป้ายกำกับที่อาจใช้ระบุคำขอนี้ซึ่งรายงานกลับใน |
geodesic_meters_per_second |
เมื่อ |
max_validation_errors |
ตัดจำนวนข้อผิดพลาดในการตรวจสอบที่แสดงผล โดยปกติแล้ว ข้อผิดพลาดเหล่านี้จะแนบไปกับเพย์โหลดข้อผิดพลาด INVALID_ARGUMENT เป็นรายละเอียดข้อผิดพลาด BadRequest (https://cloud.google.com/apis/design/errors#error_details) เว้นแต่ว่า solving_mode=VALIDATE_ONLY: ดูช่อง |
SearchMode
โหมดที่กําหนดลักษณะการทํางานของการค้นหา โดยแลกเปลี่ยนเวลาในการตอบสนองกับคุณภาพของโซลูชัน ระบบจะบังคับใช้กำหนดเวลาของคำขอทั่วโลกในทุกโหมด
Enum | |
---|---|
SEARCH_MODE_UNSPECIFIED |
โหมดการค้นหาที่ไม่ระบุ ซึ่งเทียบเท่ากับ RETURN_FAST |
RETURN_FAST |
หยุดการค้นหาหลังจากพบวิธีแก้ปัญหาแรกที่ได้ผล |
CONSUME_ALL_AVAILABLE_TIME |
ใช้เวลาทั้งหมดที่มีเพื่อค้นหาวิธีแก้ปัญหาที่ดีกว่า |
SolvingMode
กำหนดวิธีที่โปรแกรมแก้ปัญหาควรจัดการคำขอ ในโหมดทั้งหมดยกเว้น VALIDATE_ONLY
หากคําขอไม่ถูกต้อง คุณจะได้รับข้อผิดพลาด INVALID_REQUEST
ดู max_validation_errors
เพื่อจำกัดจำนวนข้อผิดพลาดที่แสดง
Enum | |
---|---|
DEFAULT_SOLVE |
แก้ปัญหาโมเดล ระบบอาจแสดงคำเตือนใน [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 ซึ่งจะรายงานแบบรวมเท่านั้น ณ วันที่ 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 ครั้งแรกทำได้ดังนี้
อย่างไรก็ตาม โปรดทราบว่า Cardinality ของ |
error_message |
สตริงที่มนุษย์อ่านได้ซึ่งอธิบายข้อผิดพลาด มีการแมป 1:1 ระหว่าง ความเสถียร: ไม่เสถียร: ข้อความแสดงข้อผิดพลาดที่เชื่อมโยงกับ |
offending_values |
อาจมีค่าของช่อง แต่ฟีเจอร์นี้อาจไม่พร้อมใช้งานเสมอไป คุณไม่ควรใช้วิธีการนี้และควรใช้เพื่อแก้ไขข้อบกพร่องของโมเดลด้วยตนเองเท่านั้น |
FieldReference
ระบุบริบทสําหรับข้อผิดพลาดในการตรวจสอบ FieldReference
จะอ้างอิงถึงฟิลด์หนึ่งๆ ในไฟล์นี้เสมอและเป็นไปตามโครงสร้างลำดับชั้นเดียวกัน ตัวอย่างเช่น เราอาจระบุองค์ประกอบ #2 ของ start_time_windows
ในยานพาหนะ #5 โดยใช้
name: "vehicles" index: 5 sub_field { name: "end_time_windows" index: 2 }
อย่างไรก็ตาม เราจะไม่ใส่เอนทิตีระดับบนสุด เช่น OptimizeToursRequest
หรือ ShipmentModel
เพื่อไม่ให้ข้อความดูรก
ช่อง | |
---|---|
name |
ชื่อช่อง เช่น "vehicles" |
sub_field |
ช่องย่อยที่ฝังแบบซ้ำซ้อน หากจำเป็น |
ฟิลด์สหภาพ
|
|
index |
ดัชนีของช่องหากซ้ำ |
key |
คีย์หากช่องเป็นแผนที่ |
OutputConfig
ระบุปลายทางสำหรับผลลัพธ์ของ [BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours]
ช่อง | |
---|---|
data_format |
ต้องระบุ รูปแบบข้อมูลเอาต์พุต |
ฟิลด์สหภาพ 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 |
ไม่บังคับ ระบุว่าจะหลีกเลี่ยงการนำทางภายในอาคารหรือไม่ ระบบจะให้ความสำคัญกับเส้นทางที่ไม่มีการนำทางในอาคาร ใช้กับโหมดการเดินทาง |
การจัดส่ง
การจัดส่งสินค้ารายการเดียว ตั้งแต่การยกขึ้นรถไปจนถึงการนำส่ง เพื่อให้ระบบถือว่ามีการจัดส่งเกิดขึ้น รถคันเดียวต้องไปที่จุดรับสินค้าแห่งหนึ่ง (และลดกำลังการผลิตที่เหลือตามนั้น) จากนั้นไปที่จุดนำส่งแห่งหนึ่งในภายหลัง (และเพิ่มกำลังการผลิตที่เหลือตามนั้นอีกครั้ง)
ช่อง | |
---|---|
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 |
ระบุเวลาอ้อมสูงสุดสัมบูรณ์เทียบกับเส้นทางที่สั้นที่สุดตั้งแต่การไปรับจนถึงการนำส่ง หากระบุ ต้องไม่เป็นค่าลบ และการจัดส่งต้องมีการรับและการนำส่งอย่างน้อย 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 |
แท็กที่กําหนดว่าเมตริกระยะเวลาและระยะทางนี้มีผลกับยานพาหนะใด หากเป็นค่าว่าง รายการนี้จะมีผลกับยานพาหนะทุกคัน และจะมีได้เพียงเมทริกซ์เดียวเท่านั้น การเริ่มต้นยานพาหนะแต่ละรายการต้องตรงกับเมทริกซ์เพียงรายการเดียว กล่าวคือ ช่อง เมทริกซ์ทั้งหมดต้องมี |
แถว
ระบุแถวของเมทริกซ์ระยะเวลาและระยะทาง
ช่อง | |
---|---|
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" ต้องเริ่มต้นหลังจากเหตุการณ์ "ที่ 1" เริ่มต้นอย่างน้อย 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 ครั้ง ก็จะมีการเปลี่ยน 1+n ครั้ง
- การเข้าชมจะอยู่ระหว่างการเปลี่ยนก่อน (ดัชนีเดียวกัน) และการเปลี่ยนหลังจากนั้น (ดัชนี + 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 ระหว่างการเปลี่ยนเส้นทาง
- โดยไม่ทับซ้อนกัน
- 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 |
ค่าใช้จ่ายของเส้นทางที่แจกแจงตามช่องคำขอที่เกี่ยวข้องกับค่าใช้จ่าย คีย์คือเส้นทางโปรโตคอลซึ่งสัมพันธ์กับอินพุต OptimizeToursRequest เช่น "model.shipments.pickups.cost" และค่าคือต้นทุนทั้งหมดที่สร้างขึ้นจากช่องค่าใช้จ่ายที่เกี่ยวข้อง ซึ่งรวบรวมจากทั่วทั้งเส้นทาง กล่าวคือ costs["model.shipments.pickups.cost"] คือผลรวมของค่าใช้จ่ายในการรับสินค้าทั้งหมดในเส้นทาง ระบบจะรายงานต้นทุนทั้งหมดที่กําหนดไว้ในรูปแบบอย่างละเอียดที่นี่ ยกเว้นต้นทุนที่เกี่ยวข้องกับ TransitionAttributes ซึ่งจะรายงานแบบรวมเท่านั้น ณ วันที่ 01/2022 |
route_total_cost |
ต้นทุนรวมของเส้นทาง ผลรวมของค่าใช้จ่ายทั้งหมดในแผนที่ต้นทุน |
พัก
ข้อมูลที่แสดงถึงการดำเนินการของช่วงพัก
ช่อง | |
---|---|
start_time |
เวลาเริ่มต้นของช่วงพัก |
duration |
ระยะเวลาของช่วงพัก |
EncodedPolyline
การนำเสนอที่เข้ารหัสของเส้นประกอบ ดูข้อมูลเพิ่มเติมเกี่ยวกับการเข้ารหัสเส้นประกอบได้ที่ https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding
ช่อง | |
---|---|
points |
สตริงที่แสดงจุดที่เข้ารหัสของเส้นประกอบ |
ทรานซิชัน
การเปลี่ยนระหว่างเหตุการณ์ 2 รายการในเส้นทาง ดูคำอธิบายของ ShipmentRoute
หากยานพาหนะไม่มี start_location
และ/หรือ end_location
เมตริกการเดินทางที่เกี่ยวข้องจะเป็น 0
ช่อง | |
---|---|
travel_duration |
ระยะเวลาการเดินทางระหว่างการเปลี่ยนผ่านนี้ |
travel_distance_meters |
ระยะทางที่เดินทางระหว่างการเปลี่ยน |
traffic_info_unavailable |
เมื่อมีการขอข้อมูลการเข้าชมผ่าน |
delay_duration |
ผลรวมของระยะเวลาการเลื่อนเวลาที่ใช้กับทรานซิชันนี้ หากมี หน่วงเวลาจะเริ่มขึ้น |
break_duration |
ผลรวมของระยะเวลาของช่วงพักที่เกิดขึ้นระหว่างการเปลี่ยนนี้ หากมี ระบบจะจัดเก็บรายละเอียดเกี่ยวกับเวลาเริ่มต้นและระยะเวลาของช่วงพักแต่ละช่วงไว้ใน |
wait_duration |
เวลาที่ใช้ในการรอระหว่างการเปลี่ยนนี้ ระยะเวลารอจะสอดคล้องกับเวลาที่ไม่ได้ใช้งาน และไม่รวมเวลาพัก และโปรดทราบว่าเวลารอนี้อาจแบ่งออกเป็นหลายช่วงเวลาที่ไม่ต่อเนื่องกัน |
total_duration |
ระยะเวลาทั้งหมดของการเปลี่ยน ซึ่งระบุไว้เพื่อความสะดวก ซึ่งมีค่าเท่ากับ
|
start_time |
เวลาเริ่มต้นของการเปลี่ยนนี้ |
route_polyline |
การนำเสนอเส้นประกอบที่เข้ารหัสของเส้นทางที่ไปตามระหว่างการเปลี่ยน ระบบจะป้อนข้อมูลในช่องนี้ต่อเมื่อตั้งค่า |
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 |
หากเหตุผลเกี่ยวข้องกับความเข้ากันไม่ได้ของยานพาหนะกับการจัดส่ง ฟิลด์นี้จะแสดงดัชนีของยานพาหนะที่เกี่ยวข้อง 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 |
การจัดส่งไม่มีค่าใช้จ่ายการดําเนินการแก้ไข แม้ว่าวิธีนี้อาจมีประโยชน์ในฐานะตัวเลือกการประมาณขั้นสูง แต่ก็อาจอธิบายสาเหตุที่ระบบข้ามการจัดส่งได้ ทดลอง: ลักษณะการทำงานหรือการมีอยู่ของช่องนี้อาจมีการเปลี่ยนแปลงในอนาคต |
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 ที่ชี้ไปยังทรัพยากรที่ 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 |
ขีดจํากัดแบบอ่อนจะไม่บังคับใช้ขีดจํากัดระยะเวลาสูงสุด แต่หากมีการละเมิด เส้นทางจะมีค่าใช้จ่ายตามระยะเวลาเป็น 2 เท่า ต้นทุนนี้จะรวมกับต้นทุนอื่นๆ ที่กําหนดไว้ในโมเดลซึ่งมีหน่วยเดียวกัน หากมีการกําหนด
|
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 |
จำนวนการโหลดที่มากกว่าต้นทุนในการย้ายโหลด 1 หน่วยจาก cost_per_unit_below_threshold เป็น cost_per_unit_above_threshold ต้องมากกว่าหรือเท่ากับ 0 |
cost_per_unit_below_threshold |
ต้นทุนในการย้ายโหลด 1 หน่วยสําหรับแต่ละหน่วยระหว่าง 0 ถึงเกณฑ์ ต้องเป็นค่าที่แน่นอนและมากกว่าหรือเท่ากับ 0 |
cost_per_unit_above_threshold |
ต้นทุนในการย้ายโหลด 1 หน่วยสําหรับแต่ละหน่วยที่เกินเกณฑ์ ในกรณีที่เกณฑ์กรณีพิเศษ = 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) สำหรับยานพาหนะหนึ่งๆ หากไม่มีตัวหาร ระบบจะใช้ ( |
จุดบอกทาง
บรรจุข้อมูลจุดอ้างอิง จุดสังเกตจะระบุตำแหน่งมาถึงและออกเดินทางของคำขอเข้าชม รวมถึงตำแหน่งเริ่มต้นและสิ้นสุดของยานพาหนะ
ช่อง | |
---|---|
side_of_road |
ไม่บังคับ บ่งบอกว่าตําแหน่งของจุดแวะพักนี้มีไว้เพื่อกำหนดค่ากําหนดให้ยานพาหนะหยุดที่ด้านใดด้านหนึ่งของถนน เมื่อคุณตั้งค่านี้ เส้นทางจะผ่านสถานที่ตั้งเพื่อให้ยานพาหนะหยุดที่ด้านข้างถนนซึ่งอยู่ถัดจากจุดศูนย์กลางของถนน ตัวเลือกนี้ใช้ไม่ได้กับโหมดการเดินทาง "เดิน" |
vehicle_stopover |
บ่งบอกว่าจุดกึ่งกลางมีไว้สำหรับให้ยานพาหนะหยุดเพื่อรับหรือส่งผู้โดยสาร ตัวเลือกนี้ใช้ได้กับโหมดการเดินทาง "ขับรถ" เท่านั้น และเมื่อมี "location_type" เป็น "location" ทดลอง: ลักษณะการทำงานหรือการมีอยู่ของช่องนี้อาจมีการเปลี่ยนแปลงในอนาคต |
ฟิลด์สหภาพ location_type วิธีต่างๆ ในการแสดงสถานที่ location_type ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น |
|
location |
จุดที่ระบุโดยใช้พิกัดทางภูมิศาสตร์ รวมถึงส่วนหัวที่ไม่บังคับ |
place_id |
รหัสสถานที่จุดที่น่าสนใจที่เชื่อมโยงกับจุดสังเกต เมื่อใช้รหัสสถานที่เพื่อระบุสถานที่ถึงหรือออกเดินทางของคำขอเข้าชม ให้ใช้รหัสสถานที่ที่เฉพาะเจาะจงเพียงพอที่จะระบุตำแหน่ง LatLng สำหรับการไปยังสถานที่นั้น เช่น รหัสสถานที่ที่แสดงถึงอาคารเหมาะที่จะใช้ แต่เราไม่แนะนำให้ใช้รหัสสถานที่ที่แสดงถึงถนน |