InjectedSolutionConstraint

โซลูชันที่แทรกอยู่ในคำขอ รวมถึงข้อมูลว่าต้องจำกัดการเข้าชมใดบ้างและวิธีการจำกัดการเข้าชม

การแสดง JSON
{
  "routes": [
    {
      object (ShipmentRoute)
    }
  ],
  "skippedShipments": [
    {
      object (SkippedShipment)
    }
  ],
  "constraintRelaxations": [
    {
      object (ConstraintRelaxation)
    }
  ]
}
ช่อง
routes[]

object (ShipmentRoute)

เส้นทางของโซลูชันที่จะแทรก บางเส้นทางอาจถูกตัดออกจากโซลูชันเดิม เส้นทางและการจัดส่งที่ข้ามไปต้องเป็นไปตามสมมติฐานเกี่ยวกับความถูกต้องพื้นฐานที่ระบุไว้สำหรับ injectedFirstSolutionRoutes

skippedShipments[]

object (SkippedShipment)

ข้ามการจัดส่งโซลูชันที่จะใส่ โซลูชันบางอย่างอาจไม่รวมอยู่ในโซลูชันต้นฉบับ โปรดดูช่อง routes

constraintRelaxations[]

object (ConstraintRelaxation)

สําหรับกลุ่มยานพาหนะ 0 กลุ่มขึ้นไป ให้ระบุเวลาและระยะเวลาที่จะลดข้อจํากัด หากช่องนี้เว้นว่างไว้ ระบบจะจำกัดเส้นทางยานพาหนะทุกเส้นทางที่ไม่ว่างเปล่าให้หมด

ConstraintRelaxation

สำหรับกลุ่มยานพาหนะ ให้ระบุว่าข้อจำกัดในการเข้าชมใดที่จะมีการผ่อนปรนและที่ระดับใด ระบบจะจำกัดการจัดส่งที่ระบุในช่อง skipped_shipment กล่าวคือ ทำให้ไม่สามารถดำเนินการได้

การแสดง JSON
{
  "relaxations": [
    {
      object (Relaxation)
    }
  ],
  "vehicleIndices": [
    integer
  ]
}
ช่อง
relaxations[]

object (Relaxation)

การผ่อนปรนข้อจำกัดการเข้าชมทั้งหมดที่จะมีผลกับการเข้าชมบนเส้นทางที่มียานพาหนะใน vehicleIndices

vehicleIndices[]

integer

ระบุดัชนียานพาหนะที่ข้อจำกัดการเข้าชม relaxations มีผลบังคับใช้ หากเว้นว่างไว้ ระบบจะถือว่าค่านี้เป็นค่าเริ่มต้น และ relaxations จะมีผลกับยานพาหนะทั้งหมดที่ไม่ได้ระบุใน constraintRelaxations อื่นๆ สามารถมีค่าเริ่มต้นได้สูงสุด 1 ค่า กล่าวคือ อนุญาตให้มีฟิลด์การผ่อนปรนข้อจำกัดได้สูงสุด 1 ฟิลด์ vehicleIndices ว่าง ระบบแสดงดัชนียานพาหนะได้เพียงครั้งเดียวเท่านั้นแม้ว่าจะอยู่ใน constraintRelaxations หลายครั้งก็ตาม

ดัชนีรถยนต์ได้รับการแมปเหมือนกับ ShipmentRoute.vehicle_index หาก interpretInjectedSolutionsUsingLabels เป็นจริง (ดู fields ความคิดเห็น)

การพักผ่อน

หาก 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": string,
  "thresholdVisitCount": integer
}
ช่อง
level

enum (Level)

ระดับการผ่อนปรนข้อจำกัดที่มีผลเมื่อเป็นไปตามเงื่อนไขที่หรือหลังจาก thresholdTime และอย่างน้อย thresholdVisitCount เป็นไปตามเงื่อนไข

thresholdTime

string (Timestamp format)

เวลาที่อาจใช้ level เพื่อผ่อนคลายหรือหลังจากนั้น

การประทับเวลาจะอยู่ในรูปแบบ RFC3339 UTC "Zulu" ที่มีความละเอียดระดับนาโนวินาทีและมีตัวเลขที่เป็นเศษส่วนได้สูงสุด 9 หลัก ตัวอย่าง: "2014-10-02T15:01:23Z" และ "2014-10-02T15:01:23.045123456Z"

thresholdVisitCount

integer

จำนวนการเข้าชมที่levelหรือหลังจากนั้นอาจใช้การผ่อนปรน หาก thresholdVisitCount เป็น 0 (หรือไม่ได้ตั้งค่า) ระบบจะใช้ level โดยตรงที่สตาร์ทรถ

หากเป็น route.visits_size() + 1 ระบบจะใช้ level กับส่วนท้ายของยานพาหนะเท่านั้น หากมากกว่า route.visits_size() + 1 จะไม่มีการใช้ level กับเส้นทางนั้นเลย

ระดับ

แสดงระดับการผ่อนปรนข้อจำกัดต่างๆ ซึ่งใช้สำหรับการเข้าชมและระดับที่ตามมาเมื่อเป็นไปตามเงื่อนไขของเกณฑ์

แจกแจงด้านล่างตามลำดับเพื่อความผ่อนคลายมากขึ้น

Enum
LEVEL_UNSPECIFIED

ระดับความผ่อนคลายเริ่มต้นโดยนัย: ไม่มีข้อจำกัดใดๆ กล่าวคือ การเข้าชมทั้งหมดจะถูกจำกัดทั้งหมด

ต้องไม่ใช้ค่านี้อย่างชัดเจนใน level

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 แต่ยานพาหนะก็ผ่อนคลายเช่นกัน กล่าวคือ การเข้าชมจะไม่เสียค่าใช้จ่ายใดๆ เลยในเวลาตามเกณฑ์หรือหลังจากพ้นเวลาที่กำหนด และอาจไม่มีประสิทธิภาพ