ดัชนี
RouteOptimization
(อินเทอร์เฟซ)AggregatedMetrics
(ข้อความ)BatchOptimizeToursMetadata
(ข้อความ)BatchOptimizeToursRequest
(ข้อความ)BatchOptimizeToursRequest.AsyncModelConfig
(ข้อความ)BatchOptimizeToursResponse
(ข้อความ)BreakRule
(ข้อความ)BreakRule.BreakRequest
(ข้อความ)BreakRule.FrequencyConstraint
(ข้อความ)DataFormat
(enum)DistanceLimit
(ข้อความ)GcsDestination
(ข้อความ)GcsSource
(ข้อความ)InjectedSolutionConstraint
(ข้อความ)InjectedSolutionConstraint.ConstraintRelaxation
(ข้อความ)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation
(ข้อความ)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation.Level
(enum)InputConfig
(ข้อความ)Location
(ข้อความ)OptimizeToursRequest
(ข้อความ)OptimizeToursRequest.SearchMode
(enum)OptimizeToursRequest.SolvingMode
(enum)OptimizeToursResponse
(ข้อความ)OptimizeToursResponse.Metrics
(ข้อความ)OptimizeToursValidationError
(ข้อความ)OptimizeToursValidationError.FieldReference
(ข้อความ)OutputConfig
(ข้อความ)Shipment
(ข้อความ)Shipment.Load
(ข้อความ)Shipment.VisitRequest
(ข้อความ)ShipmentModel
(ข้อความ)ShipmentModel.DurationDistanceMatrix
(ข้อความ)ShipmentModel.DurationDistanceMatrix.Row
(ข้อความ)ShipmentModel.PrecedenceRule
(ข้อความ)ShipmentRoute
(ข้อความ)ShipmentRoute.Break
(ข้อความ)ShipmentRoute.EncodedPolyline
(ข้อความ)ShipmentRoute.Transition
(ข้อความ)ShipmentRoute.VehicleLoad
(ข้อความ)ShipmentRoute.Visit
(ข้อความ)ShipmentTypeIncompatibility
(ข้อความ)ShipmentTypeIncompatibility.IncompatibilityMode
(enum)ShipmentTypeRequirement
(ข้อความ)ShipmentTypeRequirement.RequirementMode
(enum)SkippedShipment
(ข้อความ)SkippedShipment.Reason
(ข้อความ)SkippedShipment.Reason.Code
(enum)TimeWindow
(ข้อความ)TransitionAttributes
(ข้อความ)Vehicle
(ข้อความ)Vehicle.DurationLimit
(ข้อความ)Vehicle.LoadLimit
(ข้อความ)Vehicle.LoadLimit.Interval
(ข้อความ)Vehicle.TravelMode
(enum)Vehicle.UnloadingPolicy
(enum)Waypoint
(ข้อความ)
RouteOptimization
บริการสำหรับการเพิ่มประสิทธิภาพการทัวร์ชมยานพาหนะ
ความถูกต้องของฟิลด์บางประเภท
google.protobuf.Timestamp
- เวลาเป็นเวลา Unix: วินาทีตั้งแต่ 1970-01-01T00:00:00+00:00
- ต้องเป็น [0, 253402300799] เช่น ใน [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00]
- ไม่ได้ตั้งค่านาโนหรือตั้งค่าเป็น 0
google.protobuf.Duration
- ต้องเป็น [0, 253402300799] เช่น ใน [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00]
- ไม่ได้ตั้งค่านาโนหรือตั้งค่าเป็น 0
google.type.LatLng
- ละติจูดต้องอยู่ใน [-90.0, 90.0]
- ลองจิจูดต้องอยู่ในรูปแบบ [-180.0, 180.0]
- ละติจูดและลองจิจูดอย่างน้อยหนึ่งรายการต้องไม่เป็นศูนย์
BatchOptimizeTours |
---|
เพิ่มประสิทธิภาพการทัวร์ชมด้วยยานพาหนะสำหรับข้อความ เมธอดนี้เป็นการดำเนินการที่ใช้เวลานาน (LRO) อินพุตสำหรับการเพิ่มประสิทธิภาพ (ข้อความ
|
OptimizeTours |
---|
ส่ง โมเดล เป้าหมายคือการกำหนด
|
AggregatedMetrics
เมตริกแบบรวมสำหรับ ShipmentRoute
(การแสดงผลของ OptimizeToursResponse
ในองค์ประกอบ Transition
และ/หรือ Visit
ทั้งหมด (แสดงใน ShipmentRoute
ทั้งหมด)
ช่อง | |
---|---|
performed_shipment_count |
จำนวนการจัดส่งที่ดำเนินการ โปรดทราบว่าการจับคู่บริการรับสินค้าและบริการจัดส่งจะนับเพียงครั้งเดียว |
travel_duration |
ระยะเวลาเดินทางรวมสำหรับเส้นทางหรือโซลูชัน |
wait_duration |
ระยะเวลารอรวมสำหรับเส้นทางหรือโซลูชัน |
delay_duration |
ระยะเวลาล่าช้ารวมสำหรับเส้นทางหรือโซลูชัน |
break_duration |
ระยะเวลาพักทั้งหมดสำหรับเส้นทางหรือโซลูชัน |
visit_duration |
ระยะเวลาเข้าชมทั้งหมดสำหรับเส้นทางหรือโซลูชัน |
total_duration |
ระยะเวลารวมควรเท่ากับผลรวมของระยะเวลาทั้งหมดข้างต้น สำหรับเส้นทาง ค่านี้จะสอดคล้องกับข้อมูลต่อไปนี้
|
travel_distance_meters |
ระยะทางรวมในการเดินทางสำหรับเส้นทางหรือโซลูชัน |
max_loads |
โหลดสูงสุดตลอดเส้นทาง (โซลูชันคำตอบ) สำหรับแต่ละปริมาณบนเส้นทางนี้ (โซลูชันคำตอบ) คำนวณเป็นค่าสูงสุดจาก |
BatchOptimizeToursMetadata
ประเภทนี้ไม่มีช่อง
ข้อมูลเมตาของการดำเนินการสำหรับการเรียก BatchOptimizeToursRequest
BatchOptimizeToursRequest
ส่งคำขอเพิ่มประสิทธิภาพทัวร์ชมแบบกลุ่มเป็นการดำเนินการแบบไม่พร้อมกัน ไฟล์อินพุตแต่ละไฟล์ควรมี OptimizeToursRequest
1 รายการ และไฟล์เอาต์พุตแต่ละไฟล์จะมี OptimizeToursResponse
1 รายการ คำขอมีข้อมูลสำหรับอ่าน/เขียนและแยกวิเคราะห์ไฟล์ ไฟล์อินพุตและเอาต์พุตทั้งหมดควรอยู่ในโปรเจ็กต์เดียวกัน
ช่อง | |
---|---|
parent |
ต้องระบุ กำหนดเป้าหมายโปรเจ็กต์และสถานที่ตั้งเพื่อโทรออก รูปแบบ: * หากไม่มีการระบุตําแหน่ง ระบบจะเลือกภูมิภาคโดยอัตโนมัติ |
model_configs[] |
ต้องระบุ ข้อมูลอินพุต/เอาต์พุตแต่ละรูปแบบการซื้อ เช่น เส้นทางไฟล์และรูปแบบข้อมูล |
AsyncModelConfig
ข้อมูลสําหรับการแก้ปัญหารูปแบบการเพิ่มประสิทธิภาพ 1 รูปแบบแบบไม่พร้อมกัน
ช่อง | |
---|---|
display_name |
ไม่บังคับ ชื่อโมเดลที่ผู้ใช้กำหนด สามารถใช้เป็นชื่อแทนโดยผู้ใช้เพื่อติดตามโมเดล |
input_config |
ต้องระบุ ข้อมูลเกี่ยวกับโมเดลอินพุต |
output_config |
ต้องระบุ ข้อมูลตำแหน่งเอาต์พุตที่ต้องการ |
BatchOptimizeToursResponse
ประเภทนี้ไม่มีช่อง
ตอบกลับ BatchOptimizeToursRequest
ข้อมูลนี้จะถูกส่งคืนในการดำเนินการที่ใช้เวลานานหลังจากการดำเนินการเสร็จสมบูรณ์
BreakRule
กฎในการสร้างช่วงพักสำหรับยานพาหนะ (เช่น ช่วงพักกลางวัน) ช่วงพักคือช่วงเวลาต่อเนื่องกันระหว่างที่รถไม่มีความเคลื่อนไหว ณ ตำแหน่งปัจจุบัน และไม่สามารถออกตัวได้ อาจจะมีช่วงพักในกรณีต่อไปนี้
- ระหว่างการเดินทางระหว่างการเข้าชมสองครั้ง (ซึ่งรวมถึงเวลาก่อนหรือหลังการเข้าชมทันที แต่ไม่ได้ในระหว่างการเข้าชม) ในกรณีนี้ ระบบจะขยายเวลาขนส่งที่สอดคล้องกันระหว่างการเข้าชมเหล่านั้น
- หรือก่อนที่รถจะสตาร์ท (รถอาจไม่สตาร์ทขณะพัก) ซึ่งในกรณีนี้จะไม่ส่งผลต่อสตาร์ทรถ
- หรือหลังจากท้ายรถ (ตามด้วยเวลาสิ้นสุดของยานพาหนะ)
ช่อง | |
---|---|
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_above_soft_max |
ต้นทุนต่อกิโลเมตรที่เกิดขึ้นหากระยะทางเกินขีดจํากัด
ค่าใช้จ่ายต้องไม่ติดลบ |
GcsDestination
ตำแหน่งของ Google Cloud Storage ที่จะเขียนไฟล์เอาต์พุต
ช่อง | |
---|---|
uri |
ต้องระบุ URI ของ Google Cloud Storage |
GcsSource
ตำแหน่งของ Google Cloud Storage ที่ระบบจะอ่านไฟล์อินพุต
ช่อง | |
---|---|
uri |
ต้องระบุ URI ของออบเจ็กต์ Google Cloud Storage ที่มีรูปแบบ |
InjectedSolutionConstraint
โซลูชันที่แทรกในคำขอ ซึ่งรวมถึงข้อมูลเกี่ยวกับการเข้าชมที่ต้องจำกัดและวิธีจำกัดการเข้าชม
ช่อง | |
---|---|
routes[] |
เส้นทางของโซลูชันที่จะแทรก บางเส้นทางอาจถูกตัดออกจากโซลูชันเดิม เส้นทางและการจัดส่งที่ข้ามต้องเป็นไปตามสมมติฐานเบื้องต้นด้านความถูกต้องที่ระบุไว้สำหรับ |
skipped_shipments[] |
ข้ามการจัดส่งโซลูชันที่จะแทรกแล้ว อาจละเว้นข้อมูลบางส่วนจากโซลูชันเดิม ดูช่อง |
constraint_relaxations[] |
สำหรับยานพาหนะ 0 กลุ่มขึ้นไป ให้ระบุช่วงเวลาและปริมาณที่จะผ่อนปรนข้อจำกัด หากช่องนี้ว่างเปล่า เส้นทางสำหรับยานพาหนะที่ไม่ว่างเปล่าทั้งหมดจะถูกจำกัดทั้งหมด |
ConstraintRelaxation
สำหรับกลุ่มยานพาหนะ ให้ระบุเกณฑ์ที่ข้อจำกัดในการเข้าชมจะผ่อนปรนและอยู่ในระดับใด มีการจำกัดการจัดส่งที่ระบุในช่อง skipped_shipment
ให้ข้ามได้ นั่นคือ ดำเนินการไม่ได้
ช่อง | |
---|---|
relaxations[] |
การผ่อนปรนข้อจำกัดในการเยี่ยมชมทั้งหมดซึ่งจะใช้กับการเดินทางบนเส้นทางที่มียานพาหนะใน |
vehicle_indices[] |
ระบุดัชนีพาหนะที่ใช้ข้อจำกัดการเข้าชม ดัชนียานพาหนะจะแมปเหมือนกับ |
การพักผ่อน
หาก relaxations
ว่างเปล่า ระบบจะจำกัดเวลาเริ่มต้นและลำดับการเข้าชมทั้งหมดในวันที่ routes
และจะไม่มีการแทรกหรือเพิ่มการเข้าชมใหม่ลงในเส้นทางเหล่านั้น นอกจากนี้ เวลาเริ่มต้นและเวลาสิ้นสุดของยานพาหนะใน routes
ก็ถูกจำกัดโดยสมบูรณ์ เว้นแต่ยานพาหนะจะว่างเปล่า (กล่าวคือ ไม่มีการเข้าชมและได้ตั้งค่า used_if_route_is_empty
เป็น "เท็จ" ในโมเดล)
relaxations(i).level
ระบุระดับการผ่อนปรนข้อจำกัดที่ใช้กับการเข้าชม #j ที่เป็นไปตามสิ่งต่อไปนี้
route.visits(j).start_time >= relaxations(i).threshold_time
และj + 1 >= relaxations(i).threshold_visit_count
ในทำนองเดียวกัน การสตาร์ทรถจะผ่อนปรนถึง relaxations(i).level
หากเป็นไปตามเงื่อนไขต่อไปนี้
vehicle_start_time >= relaxations(i).threshold_time
และrelaxations(i).threshold_visit_count == 0
และจุดสิ้นสุดของยานพาหนะจะได้รับการผ่อนปรนถึงrelaxations(i).level
หากเป็นไปตามเงื่อนไขต่อไปนี้vehicle_end_time >= relaxations(i).threshold_time
และroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
หากต้องการใช้ระดับการผ่อนปรนหากการเข้าชมเป็นไปตาม threshold_visit_count
หรือ threshold_time
เพิ่ม relaxations
2 รายการที่มี level
เดียวกัน โดยที่กลุ่มหนึ่งมีการตั้งค่าเพียง threshold_visit_count
และอีกรายการมีการตั้งค่าเพียง threshold_time
หากการเข้าชมตรงกับเงื่อนไขของ relaxations
หลายรายการ ระบบจะใช้ระดับที่ผ่อนคลายมากที่สุด ผลที่ตามมาก็คือตั้งแต่การเริ่มขับรถผ่านเส้นทางไปจนถึงจุดสิ้นสุดของรถ ระดับการผ่อนปรนจะผ่อนคลายมากขึ้น นั่นคือ ระดับการผ่อนคลายไม่ได้ลดลงในขณะที่เส้นทางคืบหน้า
ช่วงเวลาและลำดับของการเข้าชมเส้นทางที่ไม่เป็นไปตามเงื่อนไขเกณฑ์ของ relaxations
ใดๆ จะถูกจำกัดโดยสมบูรณ์ และไม่สามารถแทรกการเข้าชมลงในลำดับเหล่านี้ได้ นอกจากนี้ หากจุดเริ่มต้นหรือจุดสิ้นสุดของยานพาหนะไม่เป็นไปตามเงื่อนไขของการผ่อนปรนใดๆ เวลาจะคงที่ เว้นแต่ยานพาหนะจะว่างเปล่า
ช่อง | |
---|---|
level |
ระดับการผ่อนปรนข้อจำกัดที่ใช้เมื่อเป็นไปตามเงื่อนไขที่ |
threshold_time |
เวลาหรือหลังจากนั้นอาจใช้การผ่อนปรน |
threshold_visit_count |
จำนวนการเข้าชมที่หรือหลังจากนั้นอาจมีการผ่อนปรน หากเป็น |
ระดับ
แสดงระดับการผ่อนปรนข้อจำกัดต่างๆ ซึ่งใช้สำหรับการเข้าชมและที่ตามมาเมื่อเป็นไปตามเงื่อนไขของเกณฑ์
การแจกแจงด้านล่างเป็นลำดับการเพิ่มการผ่อนคลาย
Enum | |
---|---|
LEVEL_UNSPECIFIED |
ระดับการผ่อนคลายเริ่มต้นโดยนัย: ไม่มีการผ่อนปรนข้อจำกัด กล่าวคือ การเข้าชมทั้งหมดจะถูกจำกัดโดยสมบูรณ์ ต้องไม่ใช้ค่านี้อย่างชัดเจนใน |
RELAX_VISIT_TIMES_AFTER_THRESHOLD |
เวลาเริ่มต้น/สิ้นสุดการเข้าชมจะได้รับการผ่อนปรน แต่การเข้าชมแต่ละครั้งจะยังคงผูกกับยานพาหนะเดียวกันและต้องปฏิบัติตามลำดับการเข้าชม นั่นคือไม่สามารถแทรกการเข้าชมไปมาระหว่างทั้ง 2 อย่างหรือก่อนหน้าได้ |
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.RouteoptimizerService.BatchOptimizeTours]
ช่อง | |
---|---|
data_format |
ต้องระบุ รูปแบบข้อมูลอินพุต |
ช่องการรวม source ต้องระบุ source ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้ |
|
gcs_source |
ตำแหน่งของ Google Cloud Storage ซึ่งต้องเป็นออบเจ็กต์เดี่ยว (ไฟล์) |
ตำแหน่ง
สรุปสถานที่ตั้ง (จุดทางภูมิศาสตร์และส่วนหัวที่ไม่บังคับ)
ช่อง | |
---|---|
lat_lng |
พิกัดทางภูมิศาสตร์ของจุดอ้างอิง |
heading |
ทิศทางทิศทางของเข็มทิศ ค่านี้จะใช้เพื่อระบุฝั่งของถนนที่จะใช้สำหรับรับส่ง ค่าของส่วนหัวอาจเป็นตั้งแต่ 0 ถึง 360 โดย 0 ระบุส่วนหัวของทิศเหนือที่ครบกำหนด 90 ระบุส่วนหัวของทิศตะวันออกที่ครบกำหนด ฯลฯ |
OptimizeToursRequest
ส่งคำขอไปยังเครื่องมือแก้โจทย์การเพิ่มประสิทธิภาพทัวร์ชมซึ่งกำหนดรูปแบบการจัดส่งที่จะแก้ไขรวมถึงพารามิเตอร์การเพิ่มประสิทธิภาพ
ช่อง | |
---|---|
parent |
ต้องระบุ กำหนดเป้าหมายโปรเจ็กต์หรือสถานที่ตั้งเพื่อโทรออก รูปแบบ: * หากไม่มีการระบุตําแหน่ง ระบบจะเลือกภูมิภาคโดยอัตโนมัติ |
timeout |
ถ้ามีการตั้งค่าระยะหมดเวลาไว้ เซิร์ฟเวอร์จะส่งคืนการตอบกลับก่อนที่ระยะหมดเวลาจะหมดลง หรือถึงกำหนดเวลาของเซิร์ฟเวอร์สำหรับคำขอที่โหลดพร้อมกันไม่ได้ ขึ้นอยู่กับว่ากรณีใดเกิดก่อน สำหรับคำขอแบบไม่พร้อมกัน เซิร์ฟเวอร์จะสร้างโซลูชัน (หากเป็นไปได้) ก่อนจะหมดเวลา |
model |
รูปแบบการจัดส่งที่จะแก้ไข |
solving_mode |
โดยค่าเริ่มต้น โหมดแก้ปัญหาคือ |
search_mode |
โหมดการค้นหาที่ใช้เพื่อไขคำขอ |
injected_first_solution_routes[] |
แนะนำอัลกอริทึมการเพิ่มประสิทธิภาพในการค้นหาโซลูชันแรกที่คล้ายกับโซลูชันก่อนหน้า โมเดลจะถูกจํากัดเมื่อสร้างโซลูชันแรก การจัดส่งที่ไม่ได้ดำเนินการในเส้นทางจะถูกข้ามโดยปริยายในโซลูชันแรก แต่อาจดำเนินการในโซลูชันต่อเนื่อง โซลูชันต้องเป็นไปตามสมมติฐานเกี่ยวกับความถูกต้องขั้นพื้นฐานบางประการ ดังนี้
หากโซลูชันที่แทรกลงไปเป็นไปไม่ได้ อาจไม่มีการส่งคืนข้อผิดพลาดในการตรวจสอบ และระบบอาจแสดงข้อผิดพลาดที่ระบุว่าไม่สามารถเป็นไปได้แทน |
injected_solution_constraint |
จำกัดอัลกอริทึมการเพิ่มประสิทธิภาพเพื่อค้นหาโซลูชันสุดท้ายที่คล้ายกับโซลูชันก่อนหน้า เช่น อาจนำมาใช้เพื่อตรึงเส้นทางบางส่วนที่เสร็จสมบูรณ์แล้ว หรือที่เสร็จสมบูรณ์แล้ว แต่ต้องไม่แก้ไข หากโซลูชันที่แทรกลงไปเป็นไปไม่ได้ อาจไม่มีการส่งคืนข้อผิดพลาดในการตรวจสอบ และระบบอาจแสดงข้อผิดพลาดที่ระบุว่าไม่สามารถเป็นไปได้แทน |
refresh_details_routes[] |
หากไม่ว่างเปล่า ระบบจะรีเฟรชเส้นทางที่ระบุโดยไม่แก้ไขลำดับการเข้าชมหรือเวลาเดินทางที่สําคัญ โดยจะอัปเดตเฉพาะรายละเอียดอื่นๆ เท่านั้น เราไม่สามารถแก้โจทย์โมเดล ตั้งแต่ปี 2020/11 เป็นต้นไป ตัวแปรนี้จะเติมเฉพาะโพลีไลน์ของเส้นทางที่ไม่ว่างเปล่าและกำหนดให้ ช่อง ช่องนี้ต้องไม่ใช้ร่วมกับ
|
interpret_injected_solutions_using_labels |
หากเป็นจริง
การตีความนี้มีผลกับช่อง หากจริง ป้ายกำกับในหมวดหมู่ต่อไปนี้ต้องปรากฏมากที่สุดครั้งเดียวในหมวดหมู่ของป้ายกำกับนั้น
หาก การนำการเข้าชมเส้นทางหรือทั้งเส้นทางออกจากโซลูชันที่แทรกไว้อาจส่งผลต่อข้อจำกัดโดยนัย ซึ่งอาจนำไปสู่การเปลี่ยนแปลงในโซลูชัน ข้อผิดพลาดในการตรวจสอบ หรือความไม่ทำงานได้ หมายเหตุ: ผู้โทรต้องตรวจสอบว่า |
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) ยกเว้น troubleshooting_mode=VALIDATE_ONLY: โปรดดูช่อง |
SearchMode
โหมดที่กำหนดพฤติกรรมการค้นหา ลดเวลาในการตอบสนองเทียบกับคุณภาพโซลูชัน ระบบจะบังคับใช้กำหนดเวลาคำขอส่วนกลางในทุกโหมด
Enum | |
---|---|
SEARCH_MODE_UNSPECIFIED |
โหมดการค้นหาที่ไม่ระบุ เทียบเท่ากับ RETURN_FAST |
RETURN_FAST |
หยุดการค้นหาหลังจากพบวิธีแก้ปัญหาแรกที่ดี |
CONSUME_ALL_AVAILABLE_TIME |
ใช้เวลาทั้งหมดที่มีเพื่อค้นหาโซลูชันที่ดีกว่า |
SolvingMode
กำหนดวิธีที่เครื่องมือแก้โจทย์ควรจัดการคำขอ ในทุกโหมดยกเว้น VALIDATE_ONLY
หากคำขอไม่ถูกต้อง คุณจะได้รับข้อผิดพลาด INVALID_REQUEST
ดู max_validation_errors
เพื่อจำกัดจำนวนข้อผิดพลาดที่แสดงผล
Enum | |
---|---|
DEFAULT_SOLVE |
แก้โจทย์โมเดล |
VALIDATE_ONLY |
ตรวจสอบเฉพาะโมเดลโดยไม่ต้องแก้โจทย์: เติมข้อมูล OptimizeToursResponse.validation_errors ให้ได้มากที่สุด |
DETECT_SOME_INFEASIBLE_SHIPMENTS |
ป้อนข้อมูลใน สำคัญ: การจัดส่งที่ดำเนินการไม่ได้บางรายการจะไม่แสดงที่นี่ แต่จะแสดงเฉพาะรายการที่ตรวจพบว่าทำไม่ได้ในระหว่างการประมวลผลล่วงหน้าเท่านั้น |
OptimizeToursResponse
การตอบสนองหลังจากแก้ไขปัญหาการเพิ่มประสิทธิภาพการทัวร์ชมที่มีเส้นทางซึ่งตามด้วยยานพาหนะแต่ละคัน การจัดส่งที่ข้าม และค่าใช้จ่ายโดยรวมของโซลูชัน
ช่อง | |
---|---|
routes[] |
เส้นทางที่คํานวณสำหรับยานพาหนะแต่ละคัน เส้นทาง i-th สอดคล้องกับพาหนะ i-th ในโมเดล |
request_label |
สำเนาของ |
skipped_shipments[] |
รายการการจัดส่งทั้งหมดที่ข้าม |
validation_errors[] |
รายการข้อผิดพลาดในการตรวจสอบความถูกต้องทั้งหมดที่เราสามารถตรวจพบได้อย่างอิสระ โปรดดู "ข้อผิดพลาดหลายรายการ" คำอธิบายสำหรับข้อความ |
metrics |
เมตริกระยะเวลา ระยะทาง และการใช้งานสำหรับโซลูชันนี้ |
เมตริก
เมตริกโดยรวมที่รวบรวมจากเส้นทางทั้งหมด
ช่อง | |
---|---|
aggregated_route_metrics |
ข้อมูลรวมตลอดเส้นทาง เมตริกแต่ละรายการคือผลรวม (หรือค่าสูงสุดสำหรับการโหลด) ของช่อง |
skipped_mandatory_shipment_count |
จำนวนการจัดส่งที่จำเป็นที่ข้าม |
used_vehicle_count |
จำนวนยานพาหนะที่ใช้ หมายเหตุ: หากเส้นทางของยานพาหนะไม่มีข้อมูลและ |
earliest_vehicle_start_time |
เวลาเริ่มต้นเร็วที่สุดสำหรับยานพาหนะมือสอง คำนวณเป็นเวลาขั้นต่ำสำหรับยานพาหนะมือสองทั้งหมดที่มีราคา |
latest_vehicle_end_time |
เวลาสิ้นสุดล่าสุดสำหรับยานพาหนะมือสอง ซึ่งคำนวณเป็นค่าสูงสุดสำหรับยานพาหนะมือสองทั้งหมดที่มีราคา |
costs |
ค่าใช้จ่ายของโซลูชัน แยกตามช่องคำขอที่เกี่ยวข้องกับค่าใช้จ่าย คีย์ต่างๆ คือเส้นทางโปรโตซึ่งสัมพันธ์กับ OptimizeToursRequest ของอินพุต เช่น "model.shipments.pickups.cost" และค่าเหล่านี้คือค่าใช้จ่ายทั้งหมดที่เกิดขึ้นจากช่องค่าใช้จ่ายที่เกี่ยวข้อง ซึ่งรวมจากโซลูชันทั้งหมด กล่าวคือ cost["model.shipments.pickups.cost"] คือผลรวมของค่าใช้จ่ายการรับสินค้าทั้งหมดในโซลูชัน ระบบจะรายงานค่าใช้จ่ายทั้งหมดที่กำหนดไว้ในโมเดลอย่างละเอียดที่นี่ ยกเว้นค่าใช้จ่ายที่เกี่ยวข้องกับ TransitionAttributes ซึ่งจะรายงานแบบรวมข้อมูล ณ วันที่ 1/2022 เท่านั้น |
total_cost |
ต้นทุนรวมของโซลูชัน ผลรวมของค่าทั้งหมดในแผนที่ต้นทุน |
OptimizeToursValidationError
อธิบายข้อผิดพลาดที่พบเมื่อตรวจสอบ OptimizeToursRequest
ช่อง | |
---|---|
code |
ข้อผิดพลาดในการตรวจสอบจะกำหนดโดยคู่ ( ช่องอื่นๆ (ด้านล่าง) จะให้บริบทเพิ่มเติมเกี่ยวกับข้อผิดพลาด ข้อผิดพลาดหลายรายการ: เมื่อมีข้อผิดพลาดหลายรายการ กระบวนการตรวจสอบจะพยายามแสดงข้อผิดพลาดเหล่านั้นหลายรายการ นี่เป็นกระบวนการที่ไม่สมบูรณ์ ซึ่งก็เหมือนกับคอมไพเลอร์ ข้อผิดพลาดในการตรวจสอบความถูกต้องบางอย่างจะเป็น "ร้ายแรง" ซึ่งหมายความว่าจะหยุดกระบวนการตรวจสอบทั้งหมด นี่คือกรณีของข้อผิดพลาด ความเสถียร: REFERENCE: รายการคู่รหัสทั้งหมด (รหัสและชื่อ)
|
display_name |
ชื่อที่แสดงของข้อผิดพลาด |
fields[] |
บริบทข้อผิดพลาดอาจมีช่อง 0, 1 (ส่วนใหญ่) หรือมากกว่านั้นก็ได้ ตัวอย่างเช่น การอ้างอิงจากยานพาหนะ #4 และการรับสินค้าครั้งแรกของการจัดส่ง #2 สามารถทำได้ดังนี้
อย่างไรก็ตาม โปรดทราบว่า Cardinality ของ |
error_message |
สตริงที่มนุษย์อ่านได้ซึ่งอธิบายถึงข้อผิดพลาด มีการแมปแบบ 1:1 ระหว่าง ความเสถียร: ไม่เสถียร: ข้อความแสดงข้อผิดพลาดที่เชื่อมโยงกับ |
offending_values |
อาจมีค่าของช่อง ในบางครั้งอาจไม่สามารถใช้งานได้ คุณไม่ควรพึ่งพาเครื่องมือนี้โดยเด็ดขาด และให้ใช้สำหรับการแก้ไขข้อบกพร่องของโมเดลด้วยตนเองเท่านั้น |
FieldReference
ระบุบริบทสำหรับข้อผิดพลาดในการตรวจสอบความถูกต้อง FieldReference
จะอ้างอิงช่องหนึ่งๆ ในไฟล์นี้เสมอและเป็นไปตามโครงสร้างลำดับชั้นเดียวกัน ตัวอย่างเช่น เราอาจระบุองค์ประกอบ #2 ของ start_time_windows
ของยานพาหนะ #5 โดยใช้
name: "vehicles" index: 5 sub_field { name: "end_time_windows" index: 2 }
อย่างไรก็ตาม เราจะยกเว้นเอนทิตีระดับบนสุด เช่น OptimizeToursRequest
หรือ ShipmentModel
เพื่อหลีกเลี่ยงไม่ให้ข้อความมีจำนวนมากที่สุด
ช่อง | |
---|---|
name |
ชื่อช่อง เช่น "ยานพาหนะ" |
sub_field |
หากจำเป็น ช่องย่อยที่ฝังซ้ำ |
ช่องการรวม
|
|
index |
ดัชนีของฟิลด์ หากมีค่าซ้ำ |
key |
คีย์ หากช่องนี้เป็นแผนที่ |
OutputConfig
ระบุปลายทางสำหรับผลลัพธ์ [BatchOptimizeTours][google.maps.redirectoptimizer.v1.RouteAccessibilityService.BatchOptimizeTours]
ช่อง | |
---|---|
data_format |
ต้องระบุ รูปแบบข้อมูลเอาต์พุต |
ช่องการรวม destination ต้องระบุ destination ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้ |
|
gcs_destination |
ตำแหน่งของ Google Cloud Storage ที่จะเขียนเอาต์พุต |
การจัดส่ง
การจัดส่งสินค้า 1 รายการ ตั้งแต่การไปรับที่ร้าน 1 ครั้งไปจนถึงการจัดส่งสินค้า 1 รายการ ในการทำให้ถือว่าพัสดุได้รับการดำเนินการแล้ว ยานพาหนะที่ไม่ซ้ำกันต้องไปที่จุดรับรถ 1 แห่ง (และลดความจุอะไหล่ตามความเหมาะสม) จากนั้นไปที่สถานที่นำส่งในภายหลัง (และเพิ่มความจุสำรองตามนั้น)
ช่อง | |
---|---|
display_name |
ชื่อที่แสดงที่ผู้ใช้กำหนดของการจัดส่ง โดยมีความยาวได้สูงสุด 63 อักขระและ UTF-8 ได้ |
pickups[] |
ชุดตัวเลือกการรับสินค้าที่เกี่ยวข้องกับการจัดส่ง หากไม่ได้ระบุ ยานพาหนะจะต้องไปที่สถานที่ตั้งที่เกี่ยวข้องกับการนำส่งเท่านั้น |
deliveries[] |
ชุดตัวเลือกการนำส่งที่เกี่ยวข้องกับการจัดส่ง หากไม่ได้ระบุ ยานพาหนะจะต้องไปยังสถานที่ตั้งที่เกี่ยวข้องกับบริการไปรับเท่านั้น |
load_demands |
โหลดความต้องการในการจัดส่ง (เช่น น้ำหนัก ปริมาตร จำนวนพาเลต เป็นต้น) คีย์ในแผนที่ควรเป็นตัวระบุที่อธิบายประเภทของโหลดที่เกี่ยวข้อง และโดยหลักการแล้ว อาจรวมถึงหน่วยต่างๆ ด้วย เช่น "weight_kg", "volume_gallons", "pallet_count" ฯลฯ หากคีย์ที่ระบุไม่ปรากฏในแผนที่ โหลดที่เกี่ยวข้องจะถือว่าเป็น Null |
allowed_vehicle_indices[] |
ชุดยานพาหนะที่อาจดำเนินการจัดส่งนี้ หากเว้นว่างไว้ รถทุกคันอาจทำงาน ดัชนีระบุยานพาหนะในรายการ |
costs_per_vehicle[] |
ระบุค่าใช้จ่ายที่เกิดขึ้นเมื่อการจัดส่งครั้งนี้ได้รับการนำส่งโดยยานพาหนะแต่ละคัน หากระบุ แอตทริบิวต์ดังกล่าวต้องมี 2 รายการดังนี้
ค่าใช้จ่ายเหล่านี้ต้องอยู่ในหน่วยเดียวกับ |
costs_per_vehicle_indices[] |
ตัวบอกยานพาหนะที่ใช้ |
pickup_to_delivery_absolute_detour_limit |
ระบุเวลาสูงสุดสัมบูรณ์ของทางอ้อมเทียบกับเส้นทางที่สั้นที่สุดตั้งแต่การรับสินค้าจนถึงการจัดส่ง หากระบุ จะต้องไม่ใช่มูลค่าติดลบ และการจัดส่งต้องมีบริการรับสินค้าและการจัดส่งเป็นอย่างน้อย เช่น ระบุระยะเวลาที่สั้นที่สุดในการเดินทางจากจุดรับสินค้าที่เลือกไปยังตัวเลือกการจัดส่งที่เลือกโดยตรง จากนั้นการตั้งค่า
หากระบุทั้งขีดจำกัดแบบสัมพัทธ์และขีดจำกัดสัมบูรณ์ในการจัดส่งเดียวกัน ระบบจะใช้ขีดจำกัดที่เข้มงวดมากขึ้นสำหรับคู่รับสินค้า/การนำส่งที่เป็นไปได้แต่ละคู่ ตั้งแต่ปี 2017 เป็นต้นไป ระบบจะรองรับการออกนอกเส้นทางในกรณีที่ระยะเวลาเดินทางไม่ได้ขึ้นอยู่กับยานพาหนะเท่านั้น |
pickup_to_delivery_time_limit |
ระบุระยะเวลาสูงสุดตั้งแต่เริ่มรับสินค้าจนถึงเริ่มนำส่งการจัดส่ง หากระบุ จะต้องไม่ใช่มูลค่าติดลบ และการจัดส่งต้องมีบริการรับสินค้าและการจัดส่งเป็นอย่างน้อย ข้อมูลนี้ไม่ได้ขึ้นอยู่กับทางเลือกอื่นที่เลือกไว้สำหรับการมารับที่ร้านและการจัดส่ง หรือความเร็วของยานพาหนะ ซึ่งสามารถระบุควบคู่กับข้อจำกัดการเปลี่ยนเส้นทางสูงสุด: โซลูชันจะเป็นไปตามข้อกำหนดทั้ง 2 ข้อ |
shipment_type |
สตริงที่ไม่ว่างเปล่าซึ่งระบุ "type" สำหรับการจัดส่งนี้ ฟีเจอร์นี้สามารถใช้เพื่อนิยามความไม่เข้ากันหรือข้อกำหนดระหว่าง สิ่งที่แตกต่างจาก |
label |
ระบุป้ายกำกับสำหรับการจัดส่งนี้ ระบบจะรายงานป้ายกำกับนี้ในการตอบสนองใน |
ignore |
หากจริง ให้ข้ามการจัดส่งนี้ แต่อย่าใช้ การละเว้นการจัดส่งจะทำให้เกิดข้อผิดพลาดในการตรวจสอบความถูกต้องเมื่อมี การละเว้นการจัดส่งที่ดำเนินการใน |
penalty_cost |
หากการจัดส่งไม่เสร็จสมบูรณ์ จะมีการเพิ่มค่าปรับนี้ในค่าใช้จ่ายโดยรวมของเส้นทาง การจัดส่งจะถือว่าเสร็จสมบูรณ์หากมีการเลือกมารับที่ร้านหรือจัดส่งทางเลือกอื่น ต้นทุนอาจแสดงเป็นหน่วยเดียวกับที่ใช้สำหรับช่องอื่นๆ ที่เกี่ยวข้องกับต้นทุนทั้งหมดในโมเดลและต้องเป็นค่าบวก สำคัญ: หากไม่ได้ระบุบทลงโทษนี้ ระบบจะถือว่าเป็นอนันต์ กล่าวคือ การจัดส่งจะต้องเสร็จสมบูรณ์ |
pickup_to_delivery_relative_detour_limit |
ระบุเวลาสูงสุดของทางอ้อมที่เกี่ยวข้องเมื่อเทียบกับเส้นทางที่สั้นที่สุดตั้งแต่การรับสินค้าไปจนถึงการนำส่ง หากระบุ จะต้องไม่ใช่มูลค่าติดลบ และการจัดส่งต้องมีบริการรับสินค้าและการจัดส่งเป็นอย่างน้อย เช่น ระบุระยะเวลาที่สั้นที่สุดในการเดินทางจากจุดรับสินค้าที่เลือกไปยังตัวเลือกการจัดส่งที่เลือกโดยตรง จากนั้นการตั้งค่า
หากระบุทั้งขีดจำกัดแบบสัมพัทธ์และขีดจำกัดสัมบูรณ์ในการจัดส่งเดียวกัน ระบบจะใช้ขีดจำกัดที่เข้มงวดมากขึ้นสำหรับคู่รับสินค้า/การนำส่งที่เป็นไปได้แต่ละคู่ ตั้งแต่ปี 2017 เป็นต้นไป ระบบจะรองรับการออกนอกเส้นทางในกรณีที่ระยะเวลาเดินทางไม่ได้ขึ้นอยู่กับยานพาหนะเท่านั้น |
โหลด
เมื่อไปที่สถานที่จริง ระบบอาจเพิ่มจำนวนที่กำหนดไว้ล่วงหน้าลงในน้ำหนักบรรทุกของยานพาหนะหากเป็นการรับสินค้า หรือหักออกหากเป็นการนำส่ง ข้อความนี้ระบุจำนวนเงินดังกล่าว ดูload_demands
ช่อง | |
---|---|
amount |
ปริมาณน้ำหนักบรรทุกของยานพาหนะเมื่อเข้าชมที่เกี่ยวข้องจะแตกต่างกันไป เนื่องจากเป็นจำนวนเต็ม เราจึงขอแนะนำให้ผู้ใช้เลือกหน่วยที่เหมาะสมเพื่อไม่ให้สูญเสียความแม่นยำ ต้องมากกว่า 0 |
VisitRequest
คำขอการเข้าชมซึ่งทำได้โดยยานพาหนะ: ยานพาหนะมีตำแหน่งทางภูมิศาสตร์ (หรือ 2 ดูด้านล่าง) เวลาเปิดและปิดซึ่งแสดงเป็นกรอบเวลา และระยะเวลาการให้บริการ (เวลาที่ยานพาหนะใช้เพื่อไปรับหรือส่งสินค้า)
ช่อง | |
---|---|
arrival_location |
ตำแหน่งทางภูมิศาสตร์ที่ยานพาหนะจะมาถึงเมื่อดำเนินการ |
arrival_waypoint |
เส้นทางที่ยานพาหนะจะมาถึงเมื่อดำเนินการ |
departure_location |
ตำแหน่งทางภูมิศาสตร์ที่รถจะออกเดินทางหลังจากเสร็จสิ้น |
departure_waypoint |
เส้นทางที่รถจะออกหลังจากเสร็จสิ้น |
tags[] |
ระบุแท็กที่แนบมากับคำขอเข้าชม ไม่อนุญาตสตริงว่างหรือสตริงที่ซ้ำกัน |
time_windows[] |
กรอบเวลาที่จำกัดเวลาถึงในการเยี่ยมชม โปรดทราบว่ายานพาหนะอาจออกเดินทางนอกกรอบเวลาเวลาถึง เช่น เวลาถึงและระยะเวลาไม่จำเป็นต้องอยู่ในกรอบเวลา ซึ่งอาจทำให้ต้องรอหากยานพาหนะมาถึงก่อนวันที่ การที่ไม่มี กรอบเวลาต้องไม่ต่อเนื่องกัน กล่าวคือ ไม่มีกรอบเวลาใดซ้อนทับกันหรืออยู่ติดกัน และกรอบเวลาดังกล่าวต้องเรียงตามลำดับมากขึ้น คุณจะตั้งค่า |
duration |
ระยะเวลาการเยี่ยมชม ซึ่งก็คือเวลาที่ยานพาหนะใช้ระหว่างมาถึงและออกเดินทาง (เพิ่มลงในเวลาที่ต้องรอได้ โปรดดู |
cost |
ค่าใช้จ่ายในการให้บริการคำขอเข้าชมนี้บนเส้นทางของยานพาหนะ ซึ่งอาจใช้ในการชำระค่าใช้จ่ายที่แตกต่างกันสำหรับการรับสินค้าหรือการนำส่งแต่ละครั้ง ค่าใช้จ่ายนี้ต้องอยู่ในหน่วยเดียวกับ |
load_demands |
โหลดความต้องการของคำขอเข้าชมนี้ ค่านี้เหมือนกับช่อง |
visit_types[] |
ระบุประเภทการเข้าชม ซึ่งอาจใช้เพื่อจัดสรรเวลาเพิ่มเติมที่ต้องใช้สำหรับยานพาหนะในการเดินทางครั้งนี้ (ดู ประเภทจะปรากฏได้เพียงครั้งเดียว |
label |
ระบุป้ายกำกับสำหรับ |
ShipmentModel
รูปแบบการจัดส่งประกอบด้วยชุดการจัดส่งที่ต้องดำเนินการโดยยานพาหนะชุดหนึ่ง ขณะเดียวกันก็ลดค่าใช้จ่ายโดยรวมลง ซึ่งก็คือผลรวมของสิ่งต่อไปนี้
- ค่าใช้จ่ายในการจัดเส้นทางพาหนะ (ผลรวมของค่าใช้จ่ายต่อเวลาทั้งหมด ค่าใช้จ่ายต่อการเดินทาง และค่าใช้จ่ายคงที่ของยานพาหนะทุกคัน)
- บทลงโทษการจัดส่งที่ไม่ได้ดำเนินการ
- ต้นทุนสำหรับระยะเวลาการจัดส่งทั่วโลก
ช่อง | |
---|---|
shipments[] |
ชุดการจัดส่งที่ต้องดำเนินการในโมเดล |
vehicles[] |
ชุดยานพาหนะที่ใช้เดินทางไปได้ |
global_start_time |
เวลาเริ่มต้นและสิ้นสุดทั่วโลกของโมเดล: ไม่มีเวลานอกช่วงนี้ที่จะถือว่าถูกต้อง ช่วงเวลาของโมเดลต้องน้อยกว่า 1 ปี นั่นคือ เมื่อใช้ฟิลด์ |
global_end_time |
หากไม่ได้ตั้งค่า ระบบจะใช้เวลา 00:00:00 UTC ของวันที่ 1 มกราคม 1971 (เช่น วินาที: 31536000, nanos: 0) เป็นค่าเริ่มต้น |
global_duration_cost_per_hour |
"ระยะเวลาทั่วโลก" ของแผนโดยรวมคือความแตกต่างระหว่างเวลาเริ่มต้นแรกที่มีผลเร็วที่สุดกับเวลาสิ้นสุดที่มีผลล่าสุดของยานพาหนะทุกคัน เช่น ผู้ใช้สามารถกำหนดค่าใช้จ่ายต่อชั่วโมงให้กับจำนวนดังกล่าวเพื่อพยายามเพิ่มประสิทธิภาพเพื่อให้งานเสร็จเร็วที่สุด เป็นต้น ค่าใช้จ่ายนี้ต้องอยู่ในหน่วยเดียวกับ |
duration_distance_matrices[] |
ระบุระยะเวลาและเมทริกซ์ระยะทางที่ใช้ในโมเดล หากฟิลด์นี้ว่างเปล่า ระบบจะใช้ Google Maps หรือระยะทางตามเรขาคณิตแทน ทั้งนี้ขึ้นอยู่กับค่าในฟิลด์ ตัวอย่างการใช้:
|
duration_distance_matrix_src_tags[] |
แท็กที่กำหนดแหล่งที่มาของเมทริกซ์ระยะทางและระยะเวลา แท็กจะสอดคล้องกับ |
duration_distance_matrix_dst_tags[] |
แท็กที่ระบุปลายทางของเมทริกซ์ระยะเวลาและระยะทาง แท็กจะสอดคล้องกับ |
transition_attributes[] |
เพิ่มแอตทริบิวต์การเปลี่ยนไปยังโมเดล |
shipment_type_incompatibilities[] |
ชุด delivery_types ที่ใช้ร่วมกันไม่ได้ (ดู |
shipment_type_requirements[] |
ชุดข้อกำหนด |
precedence_rules[] |
ชุดของกฎลำดับความสำคัญที่ต้องบังคับใช้ในโมเดล |
max_active_vehicles |
จำกัดจำนวนยานพาหนะที่ใช้งานอยู่สูงสุด ยานพาหนะยังใช้งานอยู่หากเส้นทางมีการจัดส่งอย่างน้อย 1 ครั้ง ซึ่งอาจใช้จำกัดจำนวนเส้นทางในกรณีที่มีจำนวนผู้ขับขี่น้อยกว่ายานพาหนะและยานพาหนะทั้งหมดอยู่คนละที่ จากนั้นการเพิ่มประสิทธิภาพจะเลือกยานพาหนะที่ดีที่สุดที่จะใช้ ต้องเป็นเชิงบวกเท่านั้น |
DurationDistanceMatrix
ระบุระยะเวลาและเมทริกซ์ระยะทางจากการเข้าชมและสถานที่เริ่มต้นของยานพาหนะที่จะเข้าชมและตำแหน่งปลายทางของยานพาหนะ
ช่อง | |
---|---|
rows[] |
ระบุแถวของเมทริกซ์ระยะเวลาและระยะทาง ต้องมีองค์ประกอบมากที่สุดเท่า |
vehicle_start_tag |
แท็กที่กำหนดยานพาหนะที่เมทริกซ์ระยะทางและระยะเวลานี้ใช้ หากเว้นว่างไว้ ตัวเลือกนี้จะใช้กับยานพาหนะทุกคัน และจะมีเมทริกซ์เพียงรายการเดียวเท่านั้น จุดเริ่มต้นของยานพาหนะแต่ละคันต้องตรงกับเมทริกซ์ 1 รายการ นั่นคือ ฟิลด์ เมทริกซ์ทั้งหมดต้องมี |
แถว
ระบุแถวของเมทริกซ์ระยะเวลาและระยะทาง
ช่อง | |
---|---|
durations[] |
ค่าระยะเวลาของแถวที่กำหนด ต้องมีองค์ประกอบมากที่สุดเท่า |
meters[] |
ค่าระยะทางสำหรับแถวที่กำหนด หากไม่มีค่าใช้จ่ายหรือข้อจำกัดที่อ้างถึงระยะทางในโมเดล ก็เว้นว่างได้ ไม่เช่นนั้นจะต้องมีองค์ประกอบมากถึง |
PrecedenceRule
กฎที่มีความสำคัญระหว่าง 2 เหตุการณ์ (แต่ละเหตุการณ์คือการรับสินค้าหรือการนำส่งการจัดส่ง) ซึ่งก็คือ "วินาที" เหตุการณ์ต้องเริ่มอย่างน้อย offset_duration
หลัง "แรก" ได้เริ่มขึ้นแล้ว
ลำดับความสำคัญหลายรายการอาจหมายถึงเหตุการณ์เดียวกัน (หรือเกี่ยวข้องกัน) เช่น "การรับสินค้าของ B เกิดขึ้นหลังจากการนำส่ง A" และ "การรับสินค้าของ C เกิดขึ้นหลังจากรับสินค้า B"
นอกจากนี้ ลำดับความสำคัญจะยังคงมีผลเฉพาะเมื่อดำเนินการจัดส่งทั้ง 2 รายการแล้วและจะไม่มีผล
ช่อง | |
---|---|
first_is_delivery |
ระบุว่าตัวเลือก "รายการแรก" กิจกรรมคือการส่ง |
second_is_delivery |
ระบุว่า "วินาที" กิจกรรมคือการส่ง |
offset_duration |
ระยะห่างระหว่าง "ตำแหน่งแรก" และ "วินาที" กิจกรรม อาจเป็นค่าลบก็ได้ |
first_index |
ดัชนีการจัดส่งของ "รายการแรก" กิจกรรม ต้องระบุฟิลด์นี้ |
second_index |
ดัชนีการจัดส่ง "วินาที" กิจกรรม ต้องระบุฟิลด์นี้ |
ShipmentRoute
เส้นทางของยานพาหนะสามารถแยกออกเป็นย่อยตามแกนเวลา ดังนี้ (เราถือว่ามีการขับรถผ่าน n ครั้ง):
| | | | | T[2], | | |
| Transition | Visit #0 | | | V[2], | | |
| #0 | aka | T[1] | V[1] | ... | V[n-1] | T[n] |
| aka T[0] | V[0] | | | V[n-2],| | |
| | | | | T[n-1] | | |
^ ^ ^ ^ ^ ^ ^ ^
vehicle V[0].start V[0].end V[1]. V[1]. V[n]. V[n]. vehicle
start (arrival) (departure) start end start end end
โปรดทราบว่าเราสร้างความแตกต่างระหว่าง
- "เหตุการณ์แบบตรงต่อเวลา" เช่น การเริ่มและจบของยานพาหนะ และจุดเริ่มต้นและจุดสิ้นสุดของการเยี่ยมชมแต่ละครั้ง (หรือที่เรียกว่าการมาถึงและการออกเดินทาง) โดยจะเกิดขึ้นในเสี้ยววินาที
- "ช่วงเวลา" เช่น การเข้าชม และการเปลี่ยนระหว่างการเข้าชม แม้ว่าบางครั้งช่วงเวลาอาจมีระยะเวลาเป็นศูนย์ เช่น เริ่มต้นและสิ้นสุดในวินาทีเดียวกัน แต่ช่วงเวลาดังกล่าวมักจะมีระยะเวลาเป็นบวก
ตัวแปร:
- หากมีการเข้าชม n ครั้ง จะมี การเปลี่ยน n+1
- การเข้าชมจะอยู่ภายในการเปลี่ยนเกิดขึ้นก่อน (ดัชนีเดียวกัน) และการเปลี่ยนตามหลัง (ดัชนี + 1) เสมอ
- สตาร์ทรถจะตามด้วยการเปลี่ยนที่ 0 เสมอ
- จุดสิ้นสุดของยานพาหนะอยู่ข้างหน้าด้วยการเปลี่ยน #n เสมอ
เมื่อซูมเข้า นี่คือสิ่งที่จะเกิดขึ้นระหว่างTransition
และVisit
---+-------------------------------------+-----------------------------+-->
| TRANSITION[i] | VISIT[i] |
| | |
| * TRAVEL: the vehicle moves from | PERFORM the visit: |
| VISIT[i-1].departure_location to | |
| VISIT[i].arrival_location, which | * Spend some time: |
| takes a given travel duration | the "visit duration". |
| and distance | |
| | * Load or unload |
| * BREAKS: the driver may have | some quantities from the |
| breaks (e.g. lunch break). | vehicle: the "demand". |
| | |
| * WAIT: the driver/vehicle does | |
| nothing. This can happen for | |
| many reasons, for example when | |
| the vehicle reaches the next | |
| event's destination before the | |
| start of its time window | |
| | |
| * DELAY: *right before* the next | |
| arrival. E.g. the vehicle and/or | |
| driver spends time unloading. | |
| | |
---+-------------------------------------+-----------------------------+-->
^ ^ ^
V[i-1].end V[i].start V[i].end
สุดท้ายนี้ คุณสามารถจัดเตรียม TRAVEL, BREAKS, DELAY และ WAIT ระหว่างการเปลี่ยนผ่านนี้
- โดยจะไม่ซ้อนทับกัน
- ซึ่งระยะเวลาดังกล่าวไม่ซ้ำกันและต้องเป็นระยะเวลาต่อเนื่องกันก่อนการเข้าชมครั้งถัดไป (หรือสิ้นสุดยานพาหนะ) ดังนั้น การทราบระยะเวลาหน่วงเวลาเพื่อให้ทราบเวลาเริ่มต้นและสิ้นสุดก็เพียงพอแล้ว
- BREAKS เป็นช่วงเวลาต่อเนื่องและไม่ซ้อนทับกัน การตอบสนองจะระบุเวลาเริ่มต้นและระยะเวลาของช่วงพักแต่ละช่วง
- TRAVEL และ WAIT จะ "ล่วงหน้า" โดยอาจมีการหยุดชะงักหลายครั้งในช่วงการเปลี่ยนผ่านนี้ ลูกค้าคิดได้ว่าการเดินทางเกิดขึ้น "โดยเร็วที่สุด" และ "รอ" จะเติมเวลาที่เหลือ
ตัวอย่าง (ที่ซับซ้อน)
TRANSITION[i]
--++-----+-----------------------------------------------------------++-->
|| | | | | | | ||
|| T | B | T | | B | | D ||
|| r | r | r | W | r | W | e ||
|| a | e | a | a | e | a | l ||
|| v | a | v | i | a | i | a ||
|| e | k | e | t | k | t | y ||
|| l | | l | | | | ||
|| | | | | | | ||
--++-----------------------------------------------------------------++-->
ช่อง | |
---|---|
vehicle_index |
ยานพาหนะที่ใช้เส้นทางซึ่งระบุโดยดัชนีในแหล่งที่มา |
vehicle_label |
ป้ายกำกับของยานพาหนะที่ใช้เส้นทางนี้ เท่ากับ |
vehicle_start_time |
เวลาที่ยานพาหนะเริ่มต้นเส้นทาง |
vehicle_end_time |
เวลาที่รถวิ่งจนเสร็จสิ้น |
visits[] |
ลำดับการเข้าชมที่แสดงเส้นทาง การเข้าชม[i] คือการเข้าชมครั้งที่ 1 ในเส้นทาง หากช่องนี้ว่างเปล่า ระบบจะถือว่ายานพาหนะไม่ได้ใช้ |
transitions[] |
รายการการเปลี่ยนตามลำดับของเส้นทาง |
has_traffic_infeasibilities |
เมื่อ
การมาถึงของ next_visit มักเกิดขึ้นช้ากว่ากรอบเวลาปัจจุบันเนื่องจากเวลาเดินทางเพิ่มขึ้น |
route_polyline |
การแทนเส้นประกอบที่เข้ารหัสของเส้นทาง ระบบจะป้อนข้อมูลในช่องนี้หากมีการตั้งค่า |
breaks[] |
กำหนดเวลาพักสำหรับยานพาหนะที่ใช้เส้นทางนี้ ลำดับ |
metrics |
เมตริกระยะเวลา ระยะทาง และโหลดสำหรับเส้นทางนี้ ระบบจะรวมช่องของ |
route_costs |
ค่าใช้จ่ายของเส้นทางแยกตามช่องคำขอที่เกี่ยวข้องกับค่าใช้จ่าย คีย์ต่างๆ คือเส้นทางโปรโตซึ่งสัมพันธ์กับ OptimizeToursRequest ของอินพุต เช่น "model.shipments.pickups.cost" และค่าเหล่านี้คือค่าใช้จ่ายทั้งหมดที่เกิดขึ้นจากช่องค่าใช้จ่ายที่เกี่ยวข้อง ซึ่งรวมจากเส้นทางทั้งหมด กล่าวคือ cost["model.shipments.pickups.cost"] คือผลรวมของค่าใช้จ่ายการรับสินค้าทั้งหมดตลอดเส้นทาง ระบบจะรายงานค่าใช้จ่ายทั้งหมดที่กำหนดไว้ในโมเดลอย่างละเอียดที่นี่ ยกเว้นค่าใช้จ่ายที่เกี่ยวข้องกับ TransitionAttributes ซึ่งจะรายงานแบบรวมข้อมูล ณ วันที่ 1/2022 เท่านั้น |
route_total_cost |
ค่าใช้จ่ายรวมของเส้นทาง ผลรวมของค่าใช้จ่ายทั้งหมดในแผนที่ต้นทุน |
พัก
ข้อมูลที่แสดงถึงการหยุดพัก
ช่อง | |
---|---|
start_time |
เวลาเริ่มต้นของการพักสายตา |
duration |
ระยะเวลาของช่วงพัก |
EncodedPolyline
การแสดงเส้นประกอบที่เข้ารหัส ดูข้อมูลเพิ่มเติมเกี่ยวกับการเข้ารหัสโพลีไลน์ได้ที่ https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding
ช่อง | |
---|---|
points |
สตริงที่แสดงถึงจุดที่เข้ารหัสของเส้นประกอบ |
ทรานซิชัน
การเปลี่ยนไปมาระหว่าง 2 เหตุการณ์บนเส้นทาง ดูคำอธิบายของ ShipmentRoute
หากยานพาหนะไม่มี start_location
และ/หรือ end_location
เมตริกการเดินทางที่เกี่ยวข้องจะเป็น 0
ช่อง | |
---|---|
travel_duration |
ระยะเวลาเดินทางในช่วงการเปลี่ยนผ่านนี้ |
travel_distance_meters |
ระยะทางที่เดินทางในช่วงการเปลี่ยนผ่าน |
traffic_info_unavailable |
เมื่อมีการขอการรับส่งข้อมูลผ่าน |
delay_duration |
ผลรวมของระยะเวลาการหน่วงเวลาที่ใช้กับการเปลี่ยนนี้ หากมี การหน่วงเวลาจะเริ่มที่ |
break_duration |
ผลรวมของระยะเวลาการพักที่เกิดขึ้นระหว่างการเปลี่ยนผ่านนี้ หากมี รายละเอียดเกี่ยวกับเวลาเริ่มต้นและระยะเวลาของช่วงพักแต่ละช่วงซึ่งจัดเก็บไว้ใน |
wait_duration |
เวลาที่ใช้ในการรอระหว่างการเปลี่ยนนี้ ระยะเวลาการรอจะสอดคล้องกับเวลาที่ไม่มีการใช้งานและไม่รวมเวลาพัก และโปรดทราบว่าเวลารอนี้อาจแบ่งออกเป็นช่วงเวลาที่ไม่ต่อเนื่องกันหลายช่วง |
total_duration |
ระยะเวลารวมของการเปลี่ยน เพื่อความสะดวก โดยมีค่าเท่ากับ
|
start_time |
เวลาเริ่มต้นของการเปลี่ยนแปลงนี้ |
route_polyline |
การแสดงเส้นประกอบที่เข้ารหัสของเส้นทางที่ติดตามระหว่างการเปลี่ยน ระบบจะป้อนข้อมูลในช่องนี้หากมีการตั้งค่า |
vehicle_loads |
การโหลดยานพาหนะระหว่างการเปลี่ยนผ่านนี้ สำหรับแต่ละประเภทที่ปรากฏใน โหลดในช่วงการเปลี่ยนผ่านครั้งแรกเป็นการโหลดเริ่มต้นของเส้นทางยานพาหนะ จากนั้นหลังการเข้าชมแต่ละครั้ง จะมีการเพิ่มหรือลบ |
VehicleLoad
รายงานน้ำหนักบรรทุกจริงของยานพาหนะ ณ จุดใดจุดหนึ่งบนเส้นทางตามประเภทที่กำหนด (ดู Transition.vehicle_loads
)
ช่อง | |
---|---|
amount |
น้ำหนักบรรทุกของยานพาหนะตามประเภทที่ระบุ โดยปกติแล้วหน่วยโหลดจะระบุตามประเภท ดู |
ไปที่
มีการเข้าชมระหว่างเส้นทาง การเข้าชมนี้เกี่ยวข้องกับการมารับที่ร้านหรือการจัดส่งของShipment
ช่อง | |
---|---|
shipment_index |
ดัชนีของฟิลด์ |
is_pickup |
หากเป็นจริง การเข้าชมตรงกับการรับสินค้าของ |
visit_request_index |
ดัชนีของ |
start_time |
เวลาที่การเข้าชมเริ่มต้นขึ้น โปรดทราบว่ายานพาหนะอาจมาถึงก่อนเวลาที่ไป เวลาสอดคล้องกับ |
load_demands |
ความต้องการการโหลดการเข้าชมทั้งหมดเป็นผลรวมของการจัดส่งและคำขอเข้าชม |
detour |
เวลาที่ต้องใช้ในทางอ้อมเพิ่มเนื่องจากการจัดส่งที่ให้บริการบนเส้นทางก่อนการเข้าชมและเวลาที่ต้องรอนานซึ่งขึ้นอยู่กับกรอบเวลา หากการเข้าชมเป็นการจัดส่ง การเปลี่ยนเส้นทางจะคำนวณจากการรับสินค้าที่เกี่ยวข้องและจะเท่ากับ
มิเช่นนั้น จะคำนวณจากยานพาหนะ
|
shipment_label |
สำเนาของ |
visit_label |
สำเนาของ |
ShipmentTypeIncompatibility
ระบุความไม่เข้ากันระหว่างการจัดส่งโดยขึ้นอยู่กับประเภทการจัดส่ง ลักษณะที่ปรากฏของการจัดส่งที่เข้ากันไม่ได้ในเส้นทางเดียวกันจะถูกจำกัดโดยอิงตามโหมดความเข้ากันไม่ได้
ช่อง | |
---|---|
types[] |
รายการประเภทที่ใช้ร่วมกันไม่ได้ การจัดส่ง 2 รายการมี |
incompatibility_mode |
ใช้โหมดกับความไม่เข้ากัน |
IncompatibilityMode
รูปแบบที่กำหนดลักษณะการจัดส่งที่เข้ากันไม่ได้ในเส้นทางเดียวกัน
Enum | |
---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
โหมดเข้ากันไม่ได้ที่ไม่ระบุ ไม่ควรใช้ค่านี้ |
NOT_PERFORMED_BY_SAME_VEHICLE |
ในโหมดนี้ การจัดส่ง 2 รายการที่มีประเภทที่ใช้ร่วมกันไม่ได้จะใช้รถคันเดียวกันไม่ได้ |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
สำหรับการจัดส่ง 2 รายการที่มีประเภทที่เข้ากันไม่ได้กับโหมดเข้ากันไม่ได้ของ
|
ShipmentTypeRequirement
ระบุข้อกำหนดระหว่างการจัดส่งตามชนิดของการจัดส่ง [delivery_type] โหมดข้อกำหนดจะเป็นตัวกำหนดรายการเฉพาะ
ช่อง | |
---|---|
required_shipment_type_alternatives[] |
รายการประเภทการจัดส่งอื่นๆ ที่ |
dependent_shipment_types[] |
การจัดส่งทั้งหมดที่มีประเภทในช่อง หมายเหตุ: ไม่อนุญาตให้ใช้เชนของข้อกำหนดที่ |
requirement_mode |
ใช้โหมดกับข้อกำหนดแล้ว |
RequirementMode
รูปแบบที่กำหนดลักษณะของการจัดส่งแบบพึ่งพาบนเส้นทาง
Enum | |
---|---|
REQUIREMENT_MODE_UNSPECIFIED |
โหมดข้อกำหนดที่ไม่ได้ระบุ ไม่ควรใช้ค่านี้ |
PERFORMED_BY_SAME_VEHICLE |
ในโหมดนี้ การทำงานแบบ "ขึ้นอยู่กับ" ทั้งหมด การจัดส่งต้องใช้ยานพาหนะเดียวกับที่ "ต้องระบุ" อย่างน้อย 1 อย่าง การจัดส่ง |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
เมื่อใช้โหมด "ผู้พึ่งพา" จุดรับพัสดุจึงต้องมีอย่างใดอย่างหนึ่งต่อไปนี้
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
เหมือนก่อนหน้านี้ ยกเว้น "การอ้างอิง" การจัดส่งต้องมีข้อมูล "ต้องระบุ" การจัดส่งบนยานพาหนะของตน ณ เวลาที่นำส่ง |
SkippedShipment
ระบุรายละเอียดการจัดส่งที่ไม่เป็นไปตามดำเนินการในโซลูชัน สําหรับกรณีที่ไม่สำคัญและ/หรือหากเราระบุสาเหตุที่ข้ามได้ เราจะรายงานเหตุผลที่นี่
ช่อง | |
---|---|
index |
ดัชนีสอดคล้องกับดัชนีของการจัดส่งในต้นทาง |
label |
สำเนาของ |
reasons[] |
รายการเหตุผลที่อธิบายสาเหตุที่ข้ามการจัดส่ง ดูความคิดเห็นด้านบน |
เหตุผล
หากเราอธิบายสาเหตุที่ข้ามการจัดส่งได้ เราจะแสดงเหตุผลไว้ที่นี่ หากเหตุผลของยานพาหนะทุกคันไม่เหมือนกัน reason
จะมีองค์ประกอบมากกว่า 1 รายการ การจัดส่งที่ถูกข้ามต้องไม่มีสาเหตุซ้ำ เช่น ในกรณีที่ช่องทั้งหมดเหมือนกัน ยกเว้นexample_vehicle_index
ตัวอย่าง
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
example_vehicle_index: 1
example_exceeded_capacity_type: "Apples"
}
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
example_vehicle_index: 3
example_exceeded_capacity_type: "Pears"
}
reasons {
code: CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT
example_vehicle_index: 1
}
การจัดส่งที่ข้ามเข้ากันไม่ได้กับยานพาหนะบางรุ่น สาเหตุที่ของแต่ละคันอาจแตกต่างกันไป แต่จะแสดง "แอปเปิล" ของยานพาหนะอย่างน้อย 1 คัน จะเกินขีดจำกัด (รวมยานพาหนะที่ 1) "ลูกแพร์" ของยานพาหนะอย่างน้อย 1 คัน จะเกินขีดจำกัด (รวมถึงยานพาหนะที่ 3) และยานพาหนะจะเกินขีดจำกัดระยะทางอย่างน้อย 1 คัน (รวมถึงยานพาหนะที่ 1)
ช่อง | |
---|---|
code |
ดูความคิดเห็นของโค้ด |
example_exceeded_capacity_type |
หากรหัสเหตุผลคือ |
example_vehicle_index |
หากเหตุผลเกี่ยวข้องกับความไม่เข้ากันระหว่างยานพาหนะสำหรับจัดส่ง ช่องนี้จะแสดงดัชนีของยานพาหนะที่เกี่ยวข้อง 1 คัน |
รหัส
โค้ดที่ระบุประเภทเหตุผล ลำดับในที่นี้ไม่มีความหมาย โดยเฉพาะอย่างยิ่ง โดยไม่ได้บ่งบอกว่าเหตุผลที่ระบุจะปรากฏก่อนเหตุผลอื่นในโซลูชันหรือไม่ หากเป็นไปตามทั้งสองข้อ
Enum | |
---|---|
CODE_UNSPECIFIED |
คุณไม่ควรใช้ตัวเลือกนี้ หากเราไม่เข้าใจสาเหตุที่หยุดการจัดส่ง เราจะส่งคืนชุดเหตุผลที่ไม่มีข้อมูลให้ |
NO_VEHICLE |
ไม่มียานพาหนะในโมเดลนี้ทำให้การจัดส่งทั้งหมดเป็นไปไม่ได้ |
DEMAND_EXCEEDS_VEHICLE_CAPACITY |
ความต้องการในการจัดส่งเกินความจุของยานพาหนะสำหรับความจุบางประเภท ซึ่งหนึ่งในจำนวนดังกล่าวเป็น example_exceeded_capacity_type |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT |
ระยะทางขั้นต่ำที่จำเป็นในการดำเนินการจัดส่งนี้ เช่น จาก โปรดทราบว่าการคำนวณนี้เราใช้ระยะทางตามทางภูมิศาสตร์ |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT |
เวลาขั้นต่ำที่จำเป็นในการดำเนินการจัดส่งนี้ รวมถึงเวลาเดินทาง เวลารอ และเวลาให้บริการเกิน หมายเหตุ: เวลาที่ใช้ในการเดินทางจะคำนวณตามสถานการณ์ที่ดีที่สุด นั่นคือ ระยะทางทางภูมิศาสตร์ x 36 เมตร/วินาที (ประมาณ 130 กม./ชั่วโมง) |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT |
เหมือนกับด้านบนแต่เราเปรียบเทียบเฉพาะเวลาเดินทางขั้นต่ำและtravel_duration_limit ของยานพาหนะเท่านั้น |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS |
ยานพาหนะไม่สามารถดำเนินการจัดส่งนี้ในสถานการณ์ที่ดีที่สุด (ดู CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT สำหรับการคำนวณเวลา) หากเริ่มต้นตั้งแต่เวลาเริ่มต้นเร็วที่สุด: เวลารวมจะทำให้ยานพาหนะสิ้นสุดหลังจากเวลาสิ้นสุดล่าสุด |
VEHICLE_NOT_ALLOWED |
ฟิลด์ allowed_vehicle_indices ของการจัดส่งมีข้อมูลและยานพาหนะนี้ไม่ได้เป็นของพาหนะ |
TimeWindow
กรอบเวลาจะจํากัดเวลาของกิจกรรม เช่น เวลามาถึงในการเข้าชม หรือเวลาเริ่มต้นและสิ้นสุดของยานพาหนะ
ขอบเขตของกรอบเวลาจริง start_time
และ end_time
บังคับใช้เวลาเร็วที่สุดและล่าสุดของกิจกรรม เช่น start_time <= event_time <=
end_time
ขอบเขตล่างของกรอบเวลาชั่วคราว soft_start_time
แสดงค่ากำหนดให้กิจกรรมจะเกิดขึ้นในวันที่หรือหลังจาก soft_start_time
โดยระบุต้นทุนตามสัดส่วนของระยะเวลาก่อน soft_start_time กิจกรรมจะเกิดขึ้น ขอบเขตบนของกรอบเวลาชั่วคราว soft_end_time
แสดงค่ากำหนดให้กิจกรรมเกิดขึ้น ณ หรือก่อน soft_end_time
โดยระบุค่าใช้จ่ายตามสัดส่วนของระยะเวลาหลังจากที่ soft_end_time
เกิดเหตุการณ์ start_time
, end_time
, soft_start_time
และ soft_end_time
ควรอยู่ภายในขีดจำกัดเวลาทั่วโลก (ดู ShipmentModel.global_start_time
และ ShipmentModel.global_end_time
) และควรเป็นไปตามข้อกำหนดต่อไปนี้
0 <= `start_time` <= `soft_start_time` <= `end_time` and
0 <= `start_time` <= `soft_end_time` <= `end_time`.
ช่อง | |
---|---|
start_time |
เวลาเริ่มต้นของกรอบเวลาที่ยากลำบาก หากไม่ระบุ ระบบจะตั้งค่าเป็น |
end_time |
เวลาสิ้นสุดของกรอบเวลาที่ยากลำบาก หากไม่ระบุ ระบบจะตั้งค่าเป็น |
soft_start_time |
Soft Start ของกรอบเวลา |
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/06 เป็นต้นไป ระบบจะรองรับเฉพาะขีดจำกัดชั่วคราวเท่านั้น |
delay |
ระบุความล่าช้าที่เกิดขึ้นเมื่อดำเนินการเปลี่ยนนี้ การหน่วงเวลานี้จะเกิดขึ้นหลังจากการเข้าชมต้นทางเสร็จสิ้นและก่อนเริ่มต้นการเข้าชมปลายทาง |
ยานพาหนะ
จำลองยานพาหนะที่มีปัญหาการจัดส่ง การแก้ไขปัญหาการจัดส่งจะสร้างเส้นทางเริ่มต้นที่ start_location
และสิ้นสุดที่ end_location
สำหรับยานพาหนะคันนี้ เส้นทางเป็นลำดับการเข้าชม (ดู ShipmentRoute
)
ช่อง | |
---|---|
display_name |
ชื่อที่แสดงของยานพาหนะที่ผู้ใช้กำหนด โดยมีความยาวได้สูงสุด 63 อักขระและ UTF-8 ได้ |
travel_mode |
รูปแบบการเดินทางซึ่งส่งผลต่อถนนที่ยานพาหนะใช้และความเร็วของรถได้ ดู |
start_location |
สถานที่ตั้งทางภูมิศาสตร์ที่ยานพาหนะเริ่มขึ้นก่อนที่จะรับการจัดส่ง หากไม่ได้ระบุ รถจะเริ่มจากการมารับครั้งแรก หากรูปแบบการจัดส่งมีระยะเวลาและเมทริกซ์ระยะทาง ก็จะต้องระบุ |
start_waypoint |
จุดบอกทางที่แสดงสถานที่ตั้งทางภูมิศาสตร์ที่ยานพาหนะเริ่มต้นก่อนที่จะรับการจัดส่ง หากไม่ได้ระบุ |
end_location |
สถานที่ตั้งทางภูมิศาสตร์ที่ยานพาหนะสิ้นสุดหลังจากเสร็จสิ้น |
end_waypoint |
จุดบนเส้นทางที่แสดงสถานที่ตั้งทางภูมิศาสตร์ที่ยานพาหนะสิ้นสุดหลังจากขับขี่รถยนต์เสร็จสิ้นเมื่อ |
start_tags[] |
ระบุแท็กที่แนบกับจุดเริ่มต้นของเส้นทางของยานพาหนะ ไม่อนุญาตสตริงว่างหรือสตริงที่ซ้ำกัน |
end_tags[] |
ระบุแท็กที่แนบกับจุดสิ้นสุดของเส้นทางของพาหนะ ไม่อนุญาตสตริงว่างหรือสตริงที่ซ้ำกัน |
start_time_windows[] |
กรอบเวลาที่ยานพาหนะอาจออกจากตำแหน่งเริ่มต้น โดยต้องอยู่ภายในขีดจำกัดเวลารวม (ดูช่อง กรอบเวลาที่อยู่ในช่องเดียวกันต้องไม่ต่อเนื่องกัน กล่าวคือ ไม่มีกรอบเวลาใดทับซ้อนกันหรืออยู่ติดกันได้ และกรอบเวลาดังกล่าวต้องอยู่ตามลำดับเวลา คุณจะตั้งค่า |
end_time_windows[] |
กรอบเวลาที่ยานพาหนะอาจมาถึงตำแหน่งปลายทาง โดยต้องอยู่ภายในขีดจำกัดเวลารวม (ดูช่อง กรอบเวลาที่อยู่ในช่องเดียวกันต้องไม่ต่อเนื่องกัน กล่าวคือ ไม่มีกรอบเวลาใดทับซ้อนกันหรืออยู่ติดกันได้ และกรอบเวลาดังกล่าวต้องอยู่ตามลำดับเวลา คุณจะตั้งค่า |
unloading_policy |
นโยบายการขนย้ายที่บังคับใช้กับรถ |
load_limits |
ความจุของยานพาหนะ (น้ำหนัก ปริมาตร จำนวนพาเลต เป็นต้น) คีย์ในแผนที่เป็นตัวระบุประเภทของการโหลด ซึ่งสอดคล้องกับคีย์ของช่อง |
cost_per_hour |
ค่ายานพาหนะ: ค่าใช้จ่ายทั้งหมดจะรวมกันและต้องอยู่ในหน่วยเดียวกับ ค่าใช้จ่ายต่อชั่วโมงของเส้นทางยานพาหนะ ค่าใช้จ่ายนี้มีผลกับเวลาทั้งหมดที่ใช้ในเส้นทาง รวมถึงเวลาที่ใช้ในการเดินทาง เวลาที่ใช้ในการรอ และเวลาเข้าชม การใช้ |
cost_per_traveled_hour |
ค่าใช้จ่ายต่อชั่วโมงในการเดินทางของยานพาหนะ ค่าใช้จ่ายนี้จะใช้ได้เฉพาะกับเวลาเดินทางของเส้นทางนั้นๆ (ซึ่งรายงานใน |
cost_per_kilometer |
ต้นทุนต่อหนึ่งกิโลเมตรของเส้นทางยานพาหนะ ค่าใช้จ่ายนี้มีผลกับระยะทางที่รายงานใน |
fixed_cost |
ค่าใช้จ่ายคงที่จะมีผลหากใช้ยานพาหนะคันนี้ในการจัดการการจัดส่ง |
used_if_route_is_empty |
ช่องนี้ใช้กับยานพาหนะในกรณีที่เส้นทางไม่ได้ให้บริการจัดส่งเท่านั้น ซึ่งจะระบุว่ายานพาหนะควรได้รับการพิจารณาว่ามีการใช้งานหรือไม่ในกรณีนี้ หากเป็นจริง ยานพาหนะจะเดินทางจากจุดเริ่มต้นไปยังตำแหน่งปลายทางแม้ว่าจะไม่ได้ให้บริการจัดส่งใดๆ รวมถึงค่าใช้จ่ายด้านเวลาและระยะทางที่เกิดจากจุดเริ่มต้น --> การเดินทางสิ้นสุดจะได้รับการพิจารณาด้วย มิเช่นนั้น รถจะไม่เดินทางจากจุดเริ่มต้นไปยังตำแหน่งปลายทาง และไม่มีการกำหนดเวลา |
route_duration_limit |
ขีดจำกัดมีผลกับระยะเวลารวมของเส้นทางของยานพาหนะ ใน |
travel_duration_limit |
ขีดจำกัดมีผลกับระยะเวลาเดินทางในเส้นทางของยานพาหนะ ใน |
route_distance_limit |
ขีดจำกัดมีผลกับระยะทางรวมในเส้นทางของยานพาหนะ ใน |
extra_visit_duration_for_visit_type |
ระบุแผนที่จากสตริง traffic_types ไปจนถึงระยะเวลา ระยะเวลาคือเวลานอกเหนือจาก หากคำขอการเยี่ยมชมมีหลายประเภท ระบบจะเพิ่มระยะเวลาสำหรับแต่ละประเภทในแผนที่ |
break_rule |
อธิบายกำหนดช่วงพักที่จะบังคับใช้กับยานพาหนะนี้ หากรถคันนี้ว่างเปล่า ระบบจะไม่กำหนดเวลาพักสำหรับยานพาหนะนี้ |
label |
ระบุป้ายกำกับสำหรับยานพาหนะนี้ ระบบจะรายงานป้ายกำกับนี้ในการตอบสนองเป็น |
ignore |
หากเป็น "จริง" หากการจัดส่งดำเนินการโดยยานพาหนะที่ละเว้นใน หากดำเนินการจัดส่งโดยยานพาหนะที่ละเว้นใน |
travel_duration_multiple |
ระบุตัวคูณที่ใช้เพื่อเพิ่มหรือลดเวลาเดินทางของยานพาหนะคันนี้ ตัวอย่างเช่น หากตั้งค่าเป็น 2.0 หมายความว่ารถคันนี้ทำงานช้ากว่าและมีเวลาเดินทางมากกว่ายานพาหนะมาตรฐานถึง 2 เท่า จำนวนนี้ไม่มีผลต่อระยะเวลาการเข้าชม และจะส่งผลต่อต้นทุนหากระบุ คำเตือน: เวลาเดินทางจะปัดเศษไปยังวินาทีที่ใกล้ที่สุดหลังจากใช้ตัวคูณนี้ แต่ก่อนที่จะดำเนินการกับตัวเลข ดังนั้นจำนวนที่น้อยอาจทำให้สูญเสียความแม่นยำ ดู |
DurationLimit
ขีดจำกัดที่กำหนดระยะเวลาสูงสุดของเส้นทางของยานพาหนะ โดยจะเป็นแบบแข็งหรือเบา
เมื่อกำหนดช่องขีดจำกัดชั่วคราว ทั้งเกณฑ์ Soft Max และค่าใช้จ่ายที่เกี่ยวข้องจะต้องกำหนดร่วมกัน
ช่อง | |
---|---|
max_duration |
ขีดจำกัดแบบเข้มงวดซึ่งจำกัดระยะเวลาอยู่ที่ max_duration |
soft_max_duration |
ขีดจำกัดชั่วคราวไม่ได้บังคับใช้ขีดจำกัดระยะเวลาสูงสุด แต่หากมีการละเมิดจะทำให้เส้นทางมีค่าใช้จ่าย ค่าใช้จ่ายนี้จะบวกกับต้นทุนอื่นๆ ที่กำหนดไว้ในโมเดลด้วยหน่วยเดียวกัน หากกำหนดไว้ |
quadratic_soft_max_duration |
ขีดจำกัดชั่วคราวไม่ได้บังคับใช้ขีดจำกัดระยะเวลาสูงสุด แต่หากมีการละเมิดจะทำให้เส้นทางมีค่าใช้จ่าย เป็นกำลังสองในระยะเวลา ค่าใช้จ่ายนี้จะบวกกับต้นทุนอื่นๆ ที่กำหนดไว้ในโมเดลด้วยหน่วยเดียวกัน หากกำหนดไว้
|
cost_per_hour_after_soft_max |
ค่าใช้จ่ายต่อชั่วโมงที่เกิดขึ้นหากละเมิดเกณฑ์
ค่าใช้จ่ายต้องไม่ติดลบ |
cost_per_square_hour_after_quadratic_soft_max |
ค่าใช้จ่ายต่อตารางชั่วโมงที่เกิดขึ้นหากละเมิดเกณฑ์ ค่าใช้จ่ายเพิ่มเติมจะเป็น 0 หากระยะเวลาต่ำกว่าเกณฑ์ มิเช่นนั้น ค่าใช้จ่ายจะขึ้นอยู่กับระยะเวลาดังต่อไปนี้
ค่าใช้จ่ายต้องไม่ติดลบ |
LoadLimit
กำหนดขีดจำกัดการโหลดที่มีผลกับยานพาหนะ เช่น "รถบรรทุกคันนี้รับน้ำหนักได้สูงสุด 3,500 กก. เท่านั้น" ดูload_limits
ช่อง | |
---|---|
soft_max_load |
ขีดจำกัดชั่วคราวของการโหลด ดู |
cost_per_unit_above_soft_max |
หากน้ำหนักบรรทุกเกิน |
start_load_interval |
ช่วงโหลดที่ยอมรับได้ของยานพาหนะที่จุดเริ่มต้นของเส้นทาง |
end_load_interval |
ช่วงโหลดที่ยอมรับได้ของยานพาหนะที่ส่วนท้ายของเส้นทาง |
max_load |
จำนวนการโหลดสูงสุดที่ยอมรับได้ |
ช่วงเวลา
ช่วงเวลาของจำนวนการโหลดที่ยอมรับได้
ช่อง | |
---|---|
min |
โหลดต่ำสุดที่ยอมรับได้ ต้องมากกว่า 0 หากระบุไว้ทั้ง 2 อย่าง |
max |
โหลดสูงสุดที่ยอมรับได้ ต้องมากกว่า 0 หากไม่ระบุ ข้อความนี้จะไม่จำกัดโหลดสูงสุด หากระบุไว้ทั้ง 2 อย่าง |
TravelMode
รูปแบบการเดินทางที่ยานพาหนะสามารถใช้ได้
ซึ่งควรเป็นส่วนหนึ่งของโหมดการเดินทางของ Routes Preferred API ของ Google Maps Platform โปรดดู https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode
Enum | |
---|---|
TRAVEL_MODE_UNSPECIFIED |
โหมดการเดินทางที่ไม่ระบุ เทียบเท่ากับ DRIVING |
DRIVING |
รูปแบบการเดินทางที่สอดคล้องกับเส้นทางการขับขี่ (รถยนต์ ...) |
WALKING |
รูปแบบการเดินทางที่สอดคล้องกับเส้นทางเดินเท้า |
UnloadingPolicy
นโยบายเกี่ยวกับวิธียกเลิกการโหลดยานพาหนะ ใช้กับการจัดส่งที่มีทั้งการมารับที่ร้านและการจัดส่งเท่านั้น
การจัดส่งอื่นๆ ไม่เสียค่าใช้จ่ายเกิดขึ้นที่ใดก็ได้ในเส้นทางโดยไม่ขึ้นต่อ unloading_policy
Enum | |
---|---|
UNLOADING_POLICY_UNSPECIFIED |
นโยบายการยกเลิกการโหลดที่ไม่ระบุ การนำส่งต้องเกิดขึ้นหลังจากการรับสินค้าที่เกี่ยวข้องเท่านั้น |
LAST_IN_FIRST_OUT |
การนำส่งต้องเรียงลำดับแบบย้อนกลับกันของการรับสินค้า |
FIRST_IN_FIRST_OUT |
การนำส่งต้องอยู่ในคำสั่งซื้อเดียวกันกับการรับสินค้า |
จุดบอกทาง
ห่อหุ้มจุดอ้างอิง จุดอ้างอิงจะระบุตำแหน่งขาเข้าและขาออกของ VisitRequests รวมถึงตำแหน่งเริ่มต้นและตำแหน่งของยานพาหนะ
ช่อง | |
---|---|
side_of_road |
ไม่บังคับ บ่งบอกว่าตำแหน่งของการชี้ทางนี้หมายถึงการกำหนดให้รถหยุดที่ด้านใดของถนน เมื่อคุณกำหนดค่านี้ เส้นทางนี้จะผ่านตำแหน่งดังกล่าวเพื่อให้รถสามารถหยุดด้านข้างของถนนที่เอนเอียงไปทางตำแหน่งนั้นจากจุดกึ่งกลางของถนน ตัวเลือกนี้ใช้ไม่ได้กับเส้นทาง "การเดิน" วิธีการเดินทาง |
ช่องการรวม location_type วิธีต่างๆ ในการแสดงสถานที่ location_type ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้ |
|
location |
จุดที่ระบุโดยใช้พิกัดทางภูมิศาสตร์ ซึ่งรวมถึงส่วนหัวซึ่งไม่บังคับ |
place_id |
รหัสสถานที่ของจุดที่น่าสนใจที่เกี่ยวข้องกับการชี้ทาง |