โซลูชันที่แทรกในคำขอ ซึ่งรวมถึงข้อมูลเกี่ยวกับการเข้าชมที่ต้องจำกัดและวิธีจำกัดการเข้าชม
การแสดง JSON |
---|
{ "routes": [ { object ( |
ช่อง | |
---|---|
routes[] |
เส้นทางของโซลูชันที่จะแทรก บางเส้นทางอาจถูกตัดออกจากโซลูชันเดิม เส้นทางและการจัดส่งที่ข้ามต้องเป็นไปตามสมมติฐานเบื้องต้นด้านความถูกต้องที่ระบุไว้สำหรับ |
skippedShipments[] |
ข้ามการจัดส่งโซลูชันที่จะแทรกแล้ว อาจละเว้นข้อมูลบางส่วนจากโซลูชันเดิม ดูช่อง |
constraintRelaxations[] |
สำหรับยานพาหนะ 0 กลุ่มขึ้นไป ให้ระบุช่วงเวลาและปริมาณที่จะผ่อนปรนข้อจำกัด หากช่องนี้ว่างเปล่า เส้นทางสำหรับยานพาหนะที่ไม่ว่างเปล่าทั้งหมดจะถูกจำกัดทั้งหมด |
ConstraintRelaxation
สำหรับกลุ่มยานพาหนะ ให้ระบุเกณฑ์ที่ข้อจำกัดในการเข้าชมจะผ่อนปรนและอยู่ในระดับใด มีการจำกัดการจัดส่งที่ระบุในช่อง skipped_shipment
ให้ข้ามได้ นั่นคือ ดำเนินการไม่ได้
การแสดง JSON |
---|
{
"relaxations": [
{
object ( |
ช่อง | |
---|---|
relaxations[] |
การผ่อนปรนข้อจำกัดในการเยี่ยมชมทั้งหมดซึ่งจะใช้กับการเดินทางบนเส้นทางที่มียานพาหนะใน |
vehicleIndices[] |
ระบุดัชนีพาหนะที่ใช้ข้อจำกัดการเข้าชม ดัชนียานพาหนะจะแมปเหมือนกับ |
การพักผ่อน
หาก relaxations
ว่างเปล่า ระบบจะจำกัดเวลาเริ่มต้นและลำดับการเข้าชมทั้งหมดในวันที่ routes
และจะไม่มีการแทรกหรือเพิ่มการเข้าชมใหม่ลงในเส้นทางเหล่านั้น นอกจากนี้ เวลาเริ่มต้นและเวลาสิ้นสุดของยานพาหนะใน routes
ก็ถูกจำกัดโดยสมบูรณ์ เว้นแต่ยานพาหนะจะว่างเปล่า (กล่าวคือ ไม่มีการเข้าชมและได้ตั้งค่า usedIfRouteIsEmpty
เป็น "เท็จ" ในโมเดล)
relaxations(i).level
ระบุระดับการผ่อนปรนข้อจำกัดที่ใช้กับการเข้าชม #j ที่เป็นไปตามสิ่งต่อไปนี้
route.visits(j).start_time >= relaxations(i).threshold_time
และj + 1 >= relaxations(i).threshold_visit_count
ในทำนองเดียวกัน การสตาร์ทรถจะผ่อนปรนถึง relaxations(i).level
หากเป็นไปตามเงื่อนไขต่อไปนี้
vehicleStartTime >= relaxations(i).threshold_time
และrelaxations(i).threshold_visit_count == 0
และจุดสิ้นสุดของยานพาหนะจะได้รับการผ่อนปรนถึงrelaxations(i).level
หากเป็นไปตามเงื่อนไขต่อไปนี้vehicleEndTime >= relaxations(i).threshold_time
และroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
หากต้องการใช้ระดับการผ่อนปรนหากการเข้าชมเป็นไปตาม thresholdVisitCount
หรือ thresholdTime
เพิ่ม relaxations
2 รายการที่มี level
เดียวกัน โดยที่กลุ่มหนึ่งมีการตั้งค่าเพียง thresholdVisitCount
และอีกรายการมีการตั้งค่าเพียง thresholdTime
หากการเข้าชมตรงกับเงื่อนไขของ relaxations
หลายรายการ ระบบจะใช้ระดับที่ผ่อนคลายมากที่สุด ผลที่ตามมาก็คือตั้งแต่การเริ่มขับรถผ่านเส้นทางไปจนถึงจุดสิ้นสุดของรถ ระดับการผ่อนปรนจะผ่อนคลายมากขึ้น นั่นคือ ระดับการผ่อนคลายไม่ได้ลดลงในขณะที่เส้นทางคืบหน้า
ช่วงเวลาและลำดับของการเข้าชมเส้นทางที่ไม่เป็นไปตามเงื่อนไขเกณฑ์ของ relaxations
ใดๆ จะถูกจำกัดโดยสมบูรณ์ และไม่สามารถแทรกการเข้าชมลงในลำดับเหล่านี้ได้ นอกจากนี้ หากจุดเริ่มต้นหรือจุดสิ้นสุดของยานพาหนะไม่เป็นไปตามเงื่อนไขของการผ่อนปรนใดๆ เวลาจะคงที่ เว้นแต่ยานพาหนะจะว่างเปล่า
การแสดง JSON |
---|
{
"level": enum ( |
ช่อง | |
---|---|
level |
ระดับการผ่อนปรนข้อจำกัดที่ใช้เมื่อเป็นไปตามเงื่อนไขที่ |
thresholdTime |
เวลาหรือหลังจากนั้นอาจใช้การผ่อนปรน การประทับเวลาเป็น RFC3339 UTC "Zulu" โดยมีความละเอียดระดับนาโนวินาทีและมีเลขเศษส่วนสูงสุด 9 หลัก ตัวอย่าง: |
thresholdVisitCount |
จำนวนการเข้าชมที่หรือหลังจากนั้นอาจมีการผ่อนปรน หากเป็น |
ระดับ
แสดงระดับการผ่อนปรนข้อจำกัดต่างๆ ซึ่งใช้สำหรับการเข้าชมและที่ตามมาเมื่อเป็นไปตามเงื่อนไขของเกณฑ์
การแจกแจงด้านล่างเป็นลำดับการเพิ่มการผ่อนคลาย
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 แต่ยานพาหนะยังผ่อนคลายด้วย นั่นคือการเข้าชมไม่เสียค่าใช้จ่าย ณ เวลาหรือหลังเกณฑ์ และอาจมีการดำเนินการไม่ได้ |