Route Optimization API จะแสดงเส้นทางสำหรับยานพาหนะในคำขอที่เกี่ยวข้อง ระบบจะกำหนดการจัดส่งให้กับยานพาหนะ หรืออาจข้ามไปก็ได้ ทั้งนี้ขึ้นอยู่กับพร็อพเพอร์ตี้ของคำขอ
OptimizeToursResponseข้อความ (REST, gRPC) มีพร็อพเพอร์ตี้ระดับบนสุดหลัก 2 รายการดังนี้
- routes[]คือเส้นทางของยานพาหนะแต่ละคันพร้อมการจัดส่งที่กำหนด แต่ละ- Routeจะมีเมตริกที่แสดงถึงคุณสมบัติของเส้นทางนั้นๆ
- metricsคือเมตริกที่รวบรวมไว้สําหรับการตอบสนองทั้งหมดในยานพาหนะและแผนเส้นทางทั้งหมด เมตริกระดับบนสุดมีพร็อพเพอร์ตี้เดียวกันกับเมตริกต่อเส้นทาง โดยมีค่าที่รวบรวมไว้ในเส้นทางทั้งหมด
ระบบอาจไม่ป้อนข้อมูลพร็อพเพอร์ตี้บางรายการเสมอไป ทั้งนี้ขึ้นอยู่กับผลการเพิ่มประสิทธิภาพ
- skippedShipments[]แสดงการจัดส่งที่ไม่ได้ดำเนินการโดยยานพาหนะ คุณสามารถข้ามการจัดส่งได้หากดำเนินการภายในข้อจำกัดที่ระบุไม่ได้ หรือหากต้นทุนในการดำเนินการจัดส่งสูงกว่าค่าปรับ ตัวอย่างเช่น หากการรับหรือนำส่งสินค้ามีการระบุ- timeWindowที่แคบมาก อาจเป็นไปไม่ได้หรือไม่มีประสิทธิภาพด้านต้นทุนที่ยานพาหนะจะ ทำการเข้าชมในช่วงเวลาที่กำหนด
- validationErrors[]ระบุข้อผิดพลาดที่ทำให้คำขอไม่ถูกต้องหรือ แก้ไขไม่ได้เมื่อตั้งค่า- solvingModeของคำขอเป็น- VALIDATE_ONLYใน- DEFAULT_SOLVEโหมดปกติ ข้อผิดพลาดในการตรวจสอบจะ ปรากฏในข้อความแสดงข้อผิดพลาดแทนเนื้อหาการตอบกลับ โปรดทราบว่า- VALIDATE_ONLYโหมดการแก้ปัญหาจะรายงานข้อผิดพลาดหลายรายการพร้อมกันได้ ซึ่ง มีประโยชน์สำหรับการแก้ไขข้อบกพร่องของคำขออย่างรวดเร็ว
คุณสมบัติของเส้นทาง
แต่ละroutes[]รายการคือข้อความ ShipmentRoute (REST, gRPC) แต่ละรายการ
ShipmentRouteแสดงถึงการกำหนดเส้นทางสำหรับยานพาหนะหนึ่งๆ จาก
คำขอ ShipmentRouteคุณสมบัติที่สำคัญVehicleที่เกี่ยวข้องกับShipmentRouteคุณสมบัติที่สอดคล้องกันVehicle ได้แก่
- vehicleIndexคือดัชนีที่อิงตาม 0 ของ- Vehicleในข้อความคำขอที่เกี่ยวข้อง การตอบกลับของ REST จะละเว้นพร็อพเพอร์ตี้นี้เมื่อค่าเป็น 0
- vehicleStartTimeคือเวลาที่ยานพาหนะต้องเริ่มเส้นทาง
- vehicleEndTimeคือเวลาที่คาดว่ายานพาหนะจะสิ้นสุดเส้นทาง
ในคำตอบ routes จะมีลักษณะดังนี้
{
  "routes": [
    {
      "vehicleStartTime": "2024-02-13T00:00:00Z",
      "vehicleEndTime": "2024-02-13T00:38:42Z",
      "visits": [
        ...
      ],
      "transitions": [
        ...
      ],
      "metrics": {
        ...
      },
      ...
    }
  ],
  ...
}
แต่ละ ShipmentRoute จะมีรายการตามลำดับของ visits ที่ยานพาหนะจะ
ดำเนินการให้เสร็จสมบูรณ์ แต่ละ Visit (REST, gRPC) แสดงถึง VisitRequest
(REST, gRPC) จากคำขอที่เกี่ยวข้อง Visit
พร็อพเพอร์ตี้ที่สำคัญมีดังนี้
- shipmentIndexคือดัชนีแบบ 0 ของการจัดส่งที่การเข้าชมนี้เป็นของ ในคำขอที่เกี่ยวข้อง
- isPickupเป็นจริงเมื่อการเข้าชมเป็นการรับสินค้า และเป็นเท็จเมื่อการเข้าชมเป็นการนำส่ง การตอบกลับของ REST จะละเว้นพร็อพเพอร์ตี้นี้เมื่อค่าเป็นเท็จ
- visitRequestIndexคือดัชนีแบบอิงตาม 0 ของ- VisitRequestจาก- Shipment.pickupsหรือ- Shipment.deliveriesในคำขอที่เกี่ยวข้อง ซึ่ง- Visitแสดง การตอบสนอง REST จะละเว้นพร็อพเพอร์ตี้นี้เมื่อค่าเป็น 0
- startTimeคือเวลาที่คาดว่าจะเริ่มการเข้าชม
- loadDemandsจะแมปประเภทการโหลดกับปริมาณการโหลดที่ต้องการเพื่อดำเนินการ- Visitให้เสร็จสมบูรณ์ จำนวนการโหลดจะเป็นค่าลบสำหรับการเข้าชมการนำส่ง ซึ่งแสดงถึงการนำโหลด ออกจากยานพาหนะ
ตัวอย่าง Visit มีลักษณะดังนี้
{
  "routes": [
    {
      ...
      "visits": [
        {
          "isPickup": true,
          "startTime": "2024-02-13T00:00:00Z",
          "detour": "0s"
        },
        ...
      ],
    },
    ...
  ],
  ...
}
ShipmentRoute แต่ละรายการประกอบด้วยรายการที่เรียงลำดับของ transitions ซึ่งแสดงถึง
การเดินทางระหว่าง visits สำหรับยานพาหนะที่กำหนด พร็อพเพอร์ตี้ที่สำคัญของTransitionข้อความ
(REST, gRPC) มีดังนี้
- startTimeคือเวลาที่รถจะเริ่มทำการเปลี่ยนผ่าน
- travelDurationคือระยะเวลาที่ยานพาหนะต้องเดินทางเพื่อ เปลี่ยนเลนให้เสร็จสมบูรณ์
- travelDistanceMetersคือระยะทางเป็นเมตรที่ยานพาหนะต้อง เดินทางเพื่อเปลี่ยนผ่านให้เสร็จสมบูรณ์
- trafficInfoUnavailableระบุว่ามีข้อมูลการเข้าชมสำหรับการเปลี่ยนผ่านหรือไม่
- waitDurationแสดงถึงเวลาที่ไม่มีการใช้งานซึ่งยานพาหนะใช้ในการรอ ก่อนที่จะเริ่ม- Visitครั้งถัดไป ซึ่งอาจเกิดขึ้นเนื่องจาก- start_timeของ- Visitต่อไปนี้
- totalDurationคือระยะเวลาทั้งหมดของการเปลี่ยนผ่าน ซึ่งรวมถึงเวลาเดินทาง เวลารอ เวลาพัก และเวลาที่ล่าช้า
- vehicleLoadsจะแมปประเภทการบรรทุกกับปริมาณการบรรทุกที่ยานพาหนะบรรทุกในระหว่างการเปลี่ยนนี้
ตัวอย่าง Transition มีลักษณะดังนี้
{
  "routes": [
    {
      ...
      "transitions": [
        ...
        {
          "travelDuration": "1171s",
          "travelDistanceMeters": 9004,
          "waitDuration": "0s",
          "totalDuration": "1171s",
          "startTime": "2024-02-13T00:00:00Z"
        },
        ...
      ],
      ...
    }
  ],
  ...
}
ดูข้อมูลเพิ่มเติมเกี่ยวกับความสัมพันธ์ระหว่าง vists กับ transitions ได้ที่
การเพิ่มประสิทธิภาพลำดับจุดรับและนำส่งและShipmentRoute
เอกสารอ้างอิง (REST, gRPC) ดูข้อมูลเพิ่มเติมเกี่ยวกับพร็อพเพอร์ตี้
routePolyline และ routeToken ของข้อความ Transition ได้ที่
เปลี่ยนเส้นประกอบและโทเค็นเส้นทาง
พร็อพเพอร์ตี้เมตริก
Metricsข้อความ (REST, gRPC) จะสรุปโซลูชันทั้งหมด
Metricsพร็อพเพอร์ตี้Metricsที่สำคัญบางอย่างมีดังนี้
- totalCostคือต้นทุนทั้งหมดที่เกิดขึ้นในการเดินทางตามเส้นทาง อ่านเพิ่มเติม เกี่ยวกับต้นทุนในพารามิเตอร์รูปแบบต้นทุน
- usedVehicleCountคือจำนวนยานพาหนะทั้งหมดที่ใช้ในโซลูชัน รถอาจมีเส้นทางว่างเปล่าเมื่อเครื่องมือเพิ่มประสิทธิภาพพิจารณาว่าไม่จำเป็นต้องใช้รถ
- skippedMandatoryShipmentCountคือจำนวนการจัดส่งที่ข้ามซึ่งมีสถานะเป็น "บังคับ" การจัดส่งที่จำเป็นไม่ได้ระบุ- penaltyCostที่จะเกิดขึ้นหากมีการข้ามการจัดส่ง คุณยังคงข้ามการจัดส่งที่จำเป็นได้หากประสิทธิภาพไม่สามารถทำได้ภายใต้ข้อจำกัดที่ระบุ อ่านข้อมูลเพิ่มเติมเกี่ยวกับต้นทุนได้ในพารามิเตอร์รูปแบบต้นทุน
เมตริกเพิ่มเติมจะรายงานเป็นข้อความ AggregatedMetrics (REST,
gRPC) ประเภทข้อความ AggregatedMetrics ใช้สำหรับพร็อพเพอร์ตี้ Metrics.aggregatedRouteMetrics และสำหรับพร็อพเพอร์ตี้ ShipmentRoute.metrics
พร็อพเพอร์ตี้ Metrics.aggregatedRouteMetrics มีเมตริกที่รวบรวมจาก ShipmentRoute ทั้งหมดใน OptimizeToursResponse พร็อพเพอร์ตี้ ShipmentRoute.metrics แต่ละรายการมีเมตริกสำหรับ ShipmentRoute นั้นๆ
AggregatedMetricsพร็อพเพอร์ตี้ที่สำคัญAggregatedMetricsมีดังนี้
- performedShipmentCountคือจำนวนการจัดส่งที่ยานพาหนะดำเนินการ ตลอดเส้นทาง
- travelDurationคือเวลารวมที่ยานพาหนะใช้ในการเดินทางขณะ ทำเส้นทางให้เสร็จสมบูรณ์
- waitDurationคือเวลารวมที่ยานพาหนะใช้ในการรอขณะที่ทำตามเส้นทาง
- delayDurationคือเวลาก่อนถึงโดยรวมของยานพาหนะ โดยปกติแล้วค่านี้จะเป็น 0 เว้นแต่จะใช้- TransitionAttributesในคำขอ
- breakDurationคือเวลารวมที่ยานพาหนะใช้ในการหยุดพักขณะ ขับรถตามเส้นทาง
- visitDurationคือระยะเวลาทั้งหมดที่ยานพาหนะใช้ในการเข้าชมขณะที่ เดินทางตามเส้นทางจนเสร็จ ซึ่งก็คือผลรวมของค่า- VisitRequest.durationทั้งหมดสำหรับ- VisitRequestที่สอดคล้องกับ- Visitที่ กำหนดให้กับยานพาหนะที่เกี่ยวข้อง
- totalDurationคือระยะเวลาทั้งหมดที่ต้องใช้ในการเดินทางตามเส้นทางของยานพาหนะ
- travelDistanceMetersคือระยะทางรวมที่ยานพาหนะเดินทางขณะ ทำตามเส้นทาง
- maxLoadsแมปประเภทการโหลดกับปริมาณการโหลดสูงสุดที่ยานพาหนะบรรทุก ในทุกจุดของเส้นทาง
ตัวอย่างข้อความ Metrics มีลักษณะดังนี้
{
  "routes": [
    ...
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 1,
      "travelDuration": "2322s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "0s",
      "totalDuration": "2322s",
      "travelDistanceMeters": 18603
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2024-02-13T00:00:00Z",
    "latestVehicleEndTime": "2024-02-13T00:38:42Z",
    "totalCost": 18.603,
    "costs": {
      "model.vehicles.cost_per_kilometer": 18.603
    }
  }
}
ตัวอย่างที่สมบูรณ์
การตอบกลับตัวอย่างที่สมบูรณ์สำหรับคำขอจากสร้างคำขอมีลักษณะดังนี้
{
  "routes": [
    {
      "vehicleStartTime": "2024-02-13T00:00:00Z",
      "vehicleEndTime": "2024-02-13T00:38:42Z",
      "visits": [
        {
          "isPickup": true,
          "startTime": "2024-02-13T00:00:00Z",
          "detour": "0s"
        },
        {
          "startTime": "2024-02-13T00:19:31Z",
          "detour": "0s"
        }
      ],
      "transitions": [
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2024-02-13T00:00:00Z"
        },
        {
          "travelDuration": "1171s",
          "travelDistanceMeters": 9004,
          "waitDuration": "0s",
          "totalDuration": "1171s",
          "startTime": "2024-02-13T00:00:00Z"
        },
        {
          "travelDuration": "1151s",
          "travelDistanceMeters": 9599,
          "waitDuration": "0s",
          "totalDuration": "1151s",
          "startTime": "2024-02-13T00:19:31Z"
        }
      ],
      "metrics": {
        "performedShipmentCount": 1,
        "travelDuration": "2322s",
        "waitDuration": "0s",
        "delayDuration": "0s",
        "breakDuration": "0s",
        "visitDuration": "0s",
        "totalDuration": "2322s",
        "travelDistanceMeters": 18603
      },
      "routeCosts": {
        "model.vehicles.cost_per_kilometer": 18.603
      },
      "routeTotalCost": 18.603
    }
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 1,
      "travelDuration": "2322s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "0s",
      "totalDuration": "2322s",
      "travelDistanceMeters": 18603
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2024-02-13T00:00:00Z",
    "latestVehicleEndTime": "2024-02-13T00:38:42Z",
    "totalCost": 18.603,
    "costs": {
      "model.vehicles.cost_per_kilometer": 18.603
    }
  }
}