ตีความการตอบกลับจาก Route Optimization API... ด้วยสุนัข

นักพัฒนาซอฟต์แวร์ในเขตเศรษฐกิจยุโรป (EEA)

หมายเหตุสำหรับเวอร์ชันที่ใช้งานจริง

คู่มือนี้ใช้ REST และ JSON เพื่อความง่าย อย่างไรก็ตาม สำหรับสภาพแวดล้อมฮาร์ดแวร์และซอฟต์แวร์ คำแนะนำโดยรวมคือให้ใช้ gRPC และไลบรารีของไคลเอ็นต์เพื่อให้มีประสิทธิภาพดีขึ้น ดูข้อมูลเพิ่มเติมได้ที่ไลบรารีของไคลเอ็นต์ Route Optimization API

หลังจากส่งคำขอในส่งคำขอแรก เครื่องมือเพิ่มประสิทธิภาพจะแสดงผล OptimizeToursResponse การตอบกลับนี้คือแผนเส้นทางที่คนขับต้องปฏิบัติตาม คู่มือนี้จะแสดงวิธีอ่านรายงานดังกล่าว

สรุปแผนเส้นทาง

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

  • เริ่มกะเวลา 07:55 น. ที่ศูนย์รับเลี้ยงเด็ก
  • รับสุนัขพันธุ์เบอร์นีส เมาน์เทนด็อกใกล้กับหอคอยคอยต์เวลา 08:20 น.
  • รับสุนัขพันธุ์ชิวาวาที่ South Sunset Playground Park เวลา 08:58 น.
  • กลับมาถึงศูนย์รับเลี้ยงเด็กเวลา 09:24 น. และรอจนกว่าจะถึงเวลาส่งบุตรหลานตอน 09:30 น.
  • ส่งสุนัขพันธุ์เบอร์นีส เมาน์เทน ด็อกตอน 9:30 น.
  • ส่งชิวาวาเวลา 09:35 น.
  • สิ้นสุดกะเวลา 09:40 น.

แผนเส้นทางมีค่าใช้จ่าย $147.22 ซึ่งรวมค่าปรับ $100 สำหรับการข้ามสุนัขพันธุ์เยอรมันเชพเพิร์ด

หากต้องการตรวจสอบผลลัพธ์ ให้เปรียบเทียบการตอบกลับของคุณกับการตอบกลับตัวอย่างแบบเต็ม ผลลัพธ์อาจแตกต่างกันเล็กน้อยเนื่องจากระยะเวลาเดินทางและระยะทางขึ้นอยู่กับข้อมูลถนนปัจจุบัน

ตัวอย่างการตอบกลับแบบเต็ม

{
  "routes": [
    {
      "vehicleStartTime": "2024-02-13T15:55:04Z",
      "vehicleEndTime": "2024-02-13T17:40:00Z",
      "visits": [
        {
          "isPickup": true,
          "startTime": "2024-02-13T16:20:00Z",
          "detour": "0s",
          "shipmentLabel": "Bernese mountain dog",
          "visitType": "PICKUP_SHIPMENT"
        },
        {
          "shipmentIndex": 1,
          "isPickup": true,
          "startTime": "2024-02-13T16:58:12Z",
          "detour": "2600s",
          "shipmentLabel": "Chihuahua",
          "visitType": "PICKUP_SHIPMENT"
        },
        {
          "startTime": "2024-02-13T17:30:00Z",
          "detour": "2297s",
          "shipmentLabel": "Bernese mountain dog",
          "visitType": "DELIVER_SHIPMENT"
        },
        {
          "shipmentIndex": 1,
          "startTime": "2024-02-13T17:35:00Z",
          "detour": "656s",
          "shipmentLabel": "Chihuahua",
          "visitType": "DELIVER_SHIPMENT"
        }
      ],
      "transitions": [
        {
          "travelDuration": "1496s",
          "travelDistanceMeters": 7082,
          "waitDuration": "0s",
          "totalDuration": "1496s",
          "startTime": "2024-02-13T15:55:04Z"
        },
        {
          "travelDuration": "1992s",
          "travelDistanceMeters": 16589,
          "waitDuration": "0s",
          "totalDuration": "1992s",
          "startTime": "2024-02-13T16:25:00Z"
        },
        {
          "travelDuration": "1252s",
          "travelDistanceMeters": 7860,
          "waitDuration": "356s",
          "totalDuration": "1608s",
          "startTime": "2024-02-13T17:03:12Z"
        },
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2024-02-13T17:35:00Z"
        },
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2024-02-13T17:40:00Z"
        }
      ],
      "metrics": {
        "performedShipmentCount": 2,
        "travelDuration": "4740s",
        "waitDuration": "356s",
        "delayDuration": "0s",
        "breakDuration": "0s",
        "visitDuration": "1200s",
        "totalDuration": "6296s",
        "travelDistanceMeters": 31531,
        "performedShipmentPenaltyCostSum": 2000
      },
      "routeCosts": {
        "model.vehicles.cost_per_hour": 47.22
      },
      "routeTotalCost": 47.22,
      "vehicleFullness": {
        "maxFullness": 0.3497777777777778,
        "activeSpan": 0.3497777777777778
      }
    }
  ],
  "skippedShipments": [
    {
      "index": 2,
      "label": "German shepherd",
      "penaltyCost": 100
    }
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 2,
      "travelDuration": "4740s",
      "waitDuration": "356s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "1200s",
      "totalDuration": "6296s",
      "travelDistanceMeters": 31531,
      "performedShipmentPenaltyCostSum": 2000
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2024-02-13T15:55:04Z",
    "latestVehicleEndTime": "2024-02-13T17:40:00Z",
    "totalCost": 147.22,
    "costs": {
      "model.vehicles.cost_per_hour": 47.22,
      "model.shipments.penalty_cost": 100
    }
  }
}
    

โครงสร้างคำตอบ

OptimizeToursResponse มีออบเจ็กต์ ShipmentRoute ที่มีประเภทข้อความการเข้าชม และออบเจ็กต์ Metrics ที่มี aggregatedRouteMetrics และ totalCost

OptimizeToursResponse ประกอบด้วย 2 องค์ประกอบหลัก ได้แก่

  • routes: แผนเส้นทางสำหรับยานพาหนะแต่ละคันในกลุ่มยานพาหนะ รวมถึงลำดับและเวลาสำหรับการรับและการนำส่งแต่ละครั้ง คุณมีรถตู้ 1 คัน จึงมีแผนเส้นทาง 1 แผน
  • metrics: สรุปแผนเส้นทางทั้งหมด รวมถึงค่าใช้จ่าย ระยะเวลา และระยะทางรวม

เนื่องจากเครื่องมือเพิ่มประสิทธิภาพข้ามเยอรมันเชพเพิร์ด การตอบกลับจึงรวม skippedShipments ด้วย

ส่วนต่อไปนี้จะแสดงตำแหน่งที่จะค้นหารายละเอียดแต่ละรายการของสรุปแผนเส้นทางในการตอบกลับ

ยานพาหนะคันใดวิ่งเส้นทางใด

เครื่องมือเพิ่มประสิทธิภาพจะสร้างแผนเส้นทาง (อาร์เรย์ routes) ที่สอดคล้องกับลำดับของ vehicles ในคำขอ

ฟิลด์ vehicleIndex จะระบุยานพาหนะแต่ละคันตามตำแหน่งที่อิงตามเลขศูนย์ ซึ่งสำหรับรถตู้ของคุณคือ 0 ช่อง vehicleStartTime และ vehicleEndTime จะบอกคนขับว่าควรเริ่มและสิ้นสุดกะเมื่อใด

Route Optimization API จะแสดงผลการประทับเวลาในรูปแบบ UTC โดยมีคำต่อท้าย Z ไม่ว่าออฟเซ็ตในคำขอจะเป็นอย่างไรก็ตาม หากต้องการทราบเวลาในซานฟรานซิสโก ให้ลบออก 8 ชั่วโมง สำหรับรถตู้ของคุณ กะจะเริ่มตั้งแต่เวลา 7:55 น. ถึง 9:40 น. ดังที่แสดงในตัวอย่างโค้ดต่อไปนี้

{
"routes": [
    {
    // "vehicleIndex": 0, // Omitted in actual JSON response because it's 0
    "vehicleStartTime": "2024-02-13T15:55:04Z",
    "vehicleEndTime": "2024-02-13T17:40:00Z",
    ...
    }
  ]
  ...
}

ลำดับการรับและส่งคืออะไร

ภายในแต่ละเส้นทาง อาร์เรย์ visits จะมีจุดรับและจุดนำส่งทั้งหมดสำหรับยานพาหนะที่กำหนดตามลำดับเวลา

shipmentIndex ของการเข้าชมแต่ละครั้งคือตำแหน่งแบบ Zero-Based ของการจัดส่งในคำขอของคุณ โดย 0 คือสุนัขพันธุ์เบอร์นีส เมาน์เทนด็อก และ 1 คือสุนัขพันธุ์ชิวาวา ช่อง shipmentLabel จะแสดงป้ายกำกับที่คุณตั้งค่าไว้สำหรับการจัดส่งแต่ละรายการ

หากต้องการแยกความแตกต่างระหว่างการรับและการส่ง (หรือการนำส่ง) คุณสามารถตรวจสอบช่อง visitType หรือ isPickup ได้

  • visitType: กำหนดการดำเนินการเข้าชมอย่างชัดเจน
    • การรับสินค้า: visitType = "PICKUP_SHIPMENT"
    • การนำส่ง: visitType = "DELIVER_SHIPMENT"
  • isPickup: ช่องตัวช่วยบูลีน
    • รับสินค้า: isPickup = true
    • การนำส่ง: isPickup = false (ละไว้ใน JSON)

หากต้องการระบุลำดับเหตุการณ์ที่แน่นอนและเวลาที่คาดว่าจะถึงในแต่ละสถานที่ ให้อ่านอาร์เรย์ visits ตามลำดับ ตารางต่อไปนี้แสดงการดำเนินการของแผนเส้นทางตามลำดับและค่าของช่อง shipmentIndex, isPickup หรือ visitType และ startTime

ลำดับ ค่า shipmentIndex ค่า isPickup หรือ visitType ค่า startTime (UTC) การดำเนินการ
การเข้าชมครั้งแรก 0 (ละเว้นใน JSON) จริงหรือPICKUP_SHIPMENT 2024-02-13T16:20:00Z รับสุนัขพันธุ์เบอร์นีส เมาน์เทน ด็อก เวลา 08:20 น.
การเข้าชมครั้งที่ 2 1 จริงหรือPICKUP_SHIPMENT 2024-02-13T16:58:12Z รับชิวาวาเวลา 8:58 น.
การเข้าชมครั้งที่ 3 0 (ละเว้นใน JSON) False (ละเว้น) หรือ DELIVER_SHIPMENT 2024-02-13T17:30:00Z พาสุนัขพันธุ์เบอร์นีส เมาน์เทนด็อกไปส่งที่ศูนย์รับเลี้ยงสุนัขตอน 09:30 น.
การเข้าชมครั้งที่ 4 1 False (ละเว้น) หรือ DELIVER_SHIPMENT 2024-02-13T17:35:00Z พาสุนัขพันธุ์ชิวาวาไปส่งที่ศูนย์รับเลี้ยงสุนัขตอน 09:35 น.

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีที่การตอบกลับแสดงลำดับนี้

{
  "routes": [
    {
      "visits": [
        {
          // "shipmentIndex": 0, // Omitted in actual JSON response because it's 0
          "isPickup": true,
          "startTime": "2024-02-13T16:20:00Z",
          "shipmentLabel": "Bernese mountain dog",
          "visitType": "PICKUP_SHIPMENT"
        },
        {
          "shipmentIndex": 1,
          "isPickup": true,
          "startTime": "2024-02-13T16:58:12Z",
          "shipmentLabel": "Chihuahua",
          "visitType": "PICKUP_SHIPMENT"
        },
        {
          // "shipmentIndex": 0, // Omitted in actual JSON response because it's 0
          // "isPickup": false, // Omitted in actual JSON response because it's false
          "startTime": "2024-02-13T17:30:00Z",
          "shipmentLabel": "Bernese mountain dog",
          "visitType": "DELIVER_SHIPMENT"
        },
        {
          "shipmentIndex": 1,
          // "isPickup": false, // Omitted in actual JSON response because it's false
          "startTime": "2024-02-13T17:35:00Z",
          "shipmentLabel": "Chihuahua",
          "visitType": "DELIVER_SHIPMENT"
        }
      ]
    }
  ]
}

การเข้าชมแต่ละครั้งยังมี visitRequestIndex ซึ่งเป็นตำแหน่งแบบอิงตามเลขศูนย์ของตัวเลือกการรับหรือการนำส่งที่เครื่องมือเพิ่มประสิทธิภาพเลือกสำหรับการจัดส่ง สุนัขแต่ละตัวในสถานการณ์นี้มีตัวเลือกการรับเพียงตัวเลือกเดียวและตัวเลือกการส่งเพียงตัวเลือกเดียว ดังนั้น visitRequestIndex จึงเป็น 0 เสมอ และการตอบกลับจะละเว้นตัวเลือกนี้

เกิดอะไรขึ้นระหว่างการเข้าชมแต่ละครั้ง

ภายในแต่ละเส้นทาง อาร์เรย์ transitions จะแสดงรายละเอียดการเดินทางระหว่างการเข้าชมแต่ละครั้ง แม้ว่า visits และ transitions จะเป็นรายการที่แยกกัน แต่ก็มีการสลับกันตามเวลาดังนี้

  1. transitions[0] (ขับรถจากจุดเริ่มต้นไปยังจุดแวะพักแรก)
  2. visits[0] (การเข้าชมครั้งแรก)
  3. transitions[1] (ขับรถจากการเข้าชมครั้งแรกไปยังการเข้าชมครั้งที่ 2)
  4. visits[1] (การเข้าชมครั้งที่ 2)
  5. ...
  6. visits[N-1] (การเข้าชมครั้งล่าสุด โดยที่ N คือจำนวนการเข้าชมทั้งหมด)
  7. transitions[N] (ขับรถจากการเข้าชมครั้งล่าสุดจนถึงจุดสิ้นสุด)

คุณสามารถติดตามไทม์ไลน์ของเส้นทางได้โดยดูที่ช่อง startTime ในอาร์เรย์ทั้ง 2 รายการ startTime ของการเปลี่ยนผ่านคือเวลาที่คนขับเริ่มเดินทาง และ startTime ของการเข้าชมคือเวลาที่คนขับเริ่มรับหรือส่งผู้โดยสาร

การเปลี่ยนแต่ละครั้งจะแสดงเวลาและระยะทางในการขับรถที่คาดไว้ระหว่างสถานที่ต่างๆ ตารางต่อไปนี้จะจับคู่ทั้งช่อง transitions และ visits กับการดำเนินการตามเส้นทางตามลำดับเวลาสำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัข

ลำดับ ชื่อช่อง ค่า startTime (UTC) รายละเอียด การดำเนินการ
การเปลี่ยนผ่านครั้งแรก transitions[0] 2024-02-13T15:55:04Z travelDuration: 1496s
travelDistanceMeters: 7082
ขับรถ 7 กม. เป็นเวลา 25 นาทีจากศูนย์รับเลี้ยงสุนัขเพื่อไปรับสุนัขพันธุ์เบอร์นีส เมาน์เทนด็อก กะเริ่มเวลา 07:55 น.
การเข้าชมครั้งแรก visits[0] 2024-02-13T16:20:00Z shipmentIndex: 0 (ละเว้นใน JSON)
isPickup: True
รับสุนัขพันธุ์เบอร์นีส เมาน์เทนด็อกตั้งแต่เวลา 08:20 น. โดยใช้เวลา 5 นาที
การเปลี่ยนผ่านครั้งที่ 2 transitions[1] 2024-02-13T16:25:00Z travelDuration: 1992s
travelDistanceMeters: 16589
ขับรถ 17 กม. เป็นเวลา 33 นาทีจากหอคอยคอยต์เพื่อไปรับสุนัขพันธุ์ชิวาวา โดยเริ่มตั้งแต่เวลา 08:25 น.
การเข้าชมครั้งที่ 2 visits[1] 2024-02-13T16:58:12Z shipmentIndex: 1
isPickup: True
รับสุนัขพันธุ์ชิวาวาตั้งแต่เวลา 08:58 น. การเข้าชมใช้เวลา 5 นาที
การเปลี่ยนผ่านครั้งที่ 3 transitions[2] 2024-02-13T17:03:12Z travelDuration: 1252s
travelDistanceMeters: 7860
waitDuration: 356s
ขับรถ 8 กม. เป็นเวลา 21 นาทีจาก South Sunset Playground กลับไปยังศูนย์รับเลี้ยงเด็ก โดยเริ่มเวลา 09:03 น. ถึงเวลา 09:24 น. และรอ 6 นาทีเพื่อให้ถึงช่วงเวลาส่ง
การเข้าชมครั้งที่ 3 visits[2] 2024-02-13T17:30:00Z shipmentIndex: 0 (ละเว้นใน JSON)
isPickup: False (ละเว้นใน JSON)
ส่งสุนัขพันธุ์เบอร์นีส เมาน์เทนด็อกที่ศูนย์รับเลี้ยงสุนัขตั้งแต่เวลา 09:30 น. ใช้เวลา 5 นาที
การเปลี่ยนผ่านครั้งที่ 4 transitions[3] 2024-02-13T17:35:00Z travelDuration: 0s
travelDistanceMeters: 0 (ละเว้นใน JSON)
ห้ามขับรถ พร้อมไปส่งชิวาวาที่ศูนย์รับเลี้ยงสุนัขตอน 9:35 น.
การเข้าชมครั้งที่ 4 visits[3] 2024-02-13T17:35:00Z shipmentIndex: 1
isPickup: False (ละเว้นใน JSON)
ส่งชิวาวาที่ศูนย์รับเลี้ยงสุนัขตั้งแต่เวลา 09:35 น. ใช้เวลา 5 นาที
การเปลี่ยนผ่านครั้งที่ 5 transitions[4] 2024-02-13T17:40:00Z travelDuration: 0s
travelDistanceMeters: 0 (ละเว้นใน JSON)
ห้ามขับรถ คนขับสิ้นสุดกะเวลา 09:40 น.

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีที่การตอบกลับให้ลำดับนี้สำหรับ transitions[0] และ transitions[1]

{
  "routes": [
    {
      "transitions": [
        {
          "travelDuration": "1496s",
          "travelDistanceMeters": 7082,
          "waitDuration": "0s",
          "totalDuration": "1496s",
          "startTime": "2024-02-13T15:55:04Z"
        },
        {
          "travelDuration": "1992s",
          "travelDistanceMeters": 16589,
          "waitDuration": "0s",
          "totalDuration": "1992s",
          "startTime": "2024-02-13T16:25:00Z"
        },
        ...
      ]
    }
  ]
}

เส้นทางนี้มีค่าใช้จ่ายเท่าใด

คุณสามารถดูช่องต่างๆ ในการตอบกลับได้ โดยขึ้นอยู่กับว่าคุณต้องการค่าใช้จ่ายสำหรับยานพาหนะที่เฉพาะเจาะจงหรือค่าใช้จ่ายทั้งหมดสำหรับทั้งกลุ่มยานพาหนะ

ตารางต่อไปนี้แสดงวิธีทั้งหมดที่คุณสามารถค้นหาข้อมูลค่าใช้จ่ายในการตอบกลับ

ผู้ปกครอง พารามิเตอร์ ขอบเขต คำอธิบาย
ShipmentRoute routeCosts ต่อเส้นทาง รายละเอียดขององค์ประกอบต้นทุนที่เฉพาะเจาะจง (เช่น ต้นทุนต่อชั่วโมง) สำหรับเส้นทางนั้นๆ
routeTotalCost ต่อเส้นทาง ค่าใช้จ่ายทั้งหมดที่คำนวณสำหรับเส้นทางที่เฉพาะเจาะจงนั้น
Metrics totalCost รวม (เส้นทางทั้งหมด) ต้นทุนรวมที่รวบรวมไว้สำหรับเส้นทางทั้งหมดในโซลูชัน
costs รวม (เส้นทางทั้งหมด) รายละเอียดขององค์ประกอบต้นทุนรวมในทุกเส้นทางในโซลูชัน

ค่าใช้จ่ายที่ระบุใน routeCosts และ costs แสดงถึงข้อจำกัดด้านค่าใช้จ่ายที่คุณระบุในคำขอ ดูข้อมูลเพิ่มเติมได้ในเอกสารแนวคิดหลักของรูปแบบต้นทุน

สำหรับสถานการณ์ของศูนย์รับฝากสุนัขนี้ เนื่องจากคุณมีการข้ามการจัดส่ง ค่าใช้จ่ายต่อเส้นทางและค่าใช้จ่ายรวมจึงแตกต่างกัน ต้นทุนเส้นทางจะรวมเฉพาะต้นทุนที่เกี่ยวข้องกับเส้นทางนั้นๆ (ค่าจ้างคนขับ) ส่วนต้นทุนรวมจะรวมค่าปรับสำหรับการจัดส่งที่ข้ามไปด้วย ตัวอย่างโค้ดต่อไปนี้แสดงตำแหน่งที่จะค้นหาค่าเหล่านี้ในการตอบกลับ

{
  "routes": [
    {
      "vehicleStartTime": "2024-02-13T15:55:04Z",
      "vehicleEndTime": "2024-02-13T17:40:00Z",
      ...
      "routeCosts": {
        "model.vehicles.cost_per_hour": 47.22
      },
      "routeTotalCost": 47.22
    }
  ],
  "metrics": {
    "totalCost": 147.22,
    "costs": {
      "model.shipments.penalty_cost": 100,
      "model.vehicles.cost_per_hour": 47.22
    },
    ...
  }
}

ตามแผนเส้นทาง คนขับจะขับรถตู้ตั้งแต่เวลา 07:55 น. ถึง 09:40 น. ซึ่งใช้เวลาประมาณ 1 ชั่วโมง 45 นาที (6,296 วินาที) เมื่อคิดตามอัตราที่คุณกำหนดไว้ที่ $27 ต่อชั่วโมง ค่าใช้จ่ายของเส้นทางจะเท่ากับ $47.22 เนื่องจากเครื่องมือเพิ่มประสิทธิภาพข้ามการจัดส่งสุนัขพันธุ์เยอรมันเชพเพิร์ด จึงเพิ่มค่าปรับ $100 ทำให้ต้นทุนรวมทั้งหมดเป็น $147.22

เหตุใดจึงมีการข้ามการจัดส่ง

เครื่องมือเพิ่มประสิทธิภาพจะแสดงรายการการจัดส่งที่ไม่ได้ดำเนินการในอาร์เรย์ skippedShipments สาเหตุที่ระบบข้ามการจัดส่งจะขึ้นอยู่กับว่าคุณได้ตั้งค่า penaltyCost ไว้หรือไม่ ดังนี้

  • การจัดส่งที่จำเป็น (ไม่มี penaltyCost): เครื่องมือเพิ่มประสิทธิภาพจะไม่ข้ามการจัดส่งเหล่านี้เพียงเพราะมีค่าใช้จ่ายสูง ระบบจะข้ามการจัดส่งก็ต่อเมื่อไม่สามารถจัดสรรการจัดส่งนั้นลงในเส้นทางใดๆ ได้ เช่น เนื่องจากกรอบเวลาขัดแย้งกับการจัดส่งอื่นๆ
  • การจัดส่งที่ไม่บังคับ (มี penaltyCost): เครื่องมือเพิ่มประสิทธิภาพยังข้ามการจัดส่งเหล่านี้ได้ด้วยเมื่อการจัดส่งมีค่าใช้จ่ายมากกว่าค่าปรับ คุณสามารถกำหนดค่าใช้จ่ายในการปรับที่แตกต่างกันเพื่อจัดลำดับความสำคัญของการจัดส่งบางรายการเหนือรายการอื่นๆ

ในสถานการณ์นี้ ช่วงเวลารับสุนัขพันธุ์เยอรมันเชพเพิร์ดขัดแย้งกับช่วงเวลาของสุนัขพันธุ์เบอร์นีสเมาน์เทนด็อก หอคอยคอยต์และแลนด์สเอนด์อยู่ห่างกัน 25 นาที คนขับจึงไม่สามารถรับผู้โดยสารทั้ง 2 คนภายในกรอบเวลา 20 นาทีได้ เครื่องมือเพิ่มประสิทธิภาพต้องข้ามรายการใดรายการหนึ่ง เนื่องจากสุนัขพันธุ์เยอรมันเชพเพิร์ดมีค่าปรับต่ำกว่า (3,000 บาท เทียบกับ 30,000 บาทสำหรับลูกค้าทั่วไป) เครื่องมือเพิ่มประสิทธิภาพจึงข้ามสุนัขตัวนี้และเสียค่าปรับ 3,000 บาท

ตัวอย่างโค้ดต่อไปนี้แสดงออบเจ็กต์ skippedShipments ในการตอบกลับ

{
  ...
  "skippedShipments": [
    {
      "index": 2,
      "label": "German shepherd",
      "penaltyCost": 100
    }
  ],
  ...
}

ออบเจ็กต์ skippedShipments ในการตอบกลับประกอบด้วยช่องต่อไปนี้

  • index: ดัชนีแบบ Zero-Based ของการจัดส่งในคำขอ (2 สำหรับการจัดส่งครั้งที่ 3)
  • label: ป้ายกำกับที่คุณระบุในคำขอ ("เยอรมันเชพเพิร์ด")
  • penaltyCost: ค่าปรับที่คุณระบุไว้ในคำขอ ซึ่ง API จะเพิ่มลงในต้นทุนรวม

หากต้องการป้องกันไม่ให้เครื่องมือเพิ่มประสิทธิภาพข้ามการจัดส่ง ให้ผ่อนคลายข้อจำกัดที่ทำให้เกิดความขัดแย้ง เช่น ขอให้เจ้าของสุนัขพันธุ์เยอรมันเชพเพิร์ดขยายช่วงเวลารับสุนัขให้กว้างขึ้น แล้วอัปเดต timeWindows สำหรับการรับสุนัขในคำขอของคุณ

ช่องการตอบกลับในตัวอย่าง

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

คุณสามารถกรองเนื้อหาตามระดับบนสุดหรือตามการค้นหาข้อความได้

ผู้ปกครอง พารามิเตอร์ ประเภทพร็อพเพอร์ตี้ คำอธิบาย
OptimizeToursResponse routes อาร์เรย์ของออบเจ็กต์ (ShipmentRoute) ซึ่งประกอบด้วยรายการเส้นทางที่คำนวณสำหรับยานพาหนะแต่ละคัน (1 เส้นทางต่อยานพาหนะ 1 คัน) สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ ข้อมูลนี้ประกอบด้วยแผนเส้นทางโดยละเอียดสำหรับรถตู้คันเดียวของคุณ
metrics ออบเจ็กต์ (Metrics) ซึ่งประกอบด้วยเมตริกโดยรวมสำหรับโซลูชันที่รวบรวมจากเส้นทางทั้งหมด สำหรับสถานการณ์ของศูนย์รับเลี้ยงสุนัขนี้ นี่คือสรุปค่าใช้จ่ายและระยะเวลาการดำเนินงานสำหรับวันนั้น
skippedShipments อาร์เรย์ของออบเจ็กต์ (SkippedShipment) ซึ่งประกอบด้วยรายการการจัดส่งที่ข้ามไปในโซลูชัน สำหรับสถานการณ์นี้ ระบบจะข้ามสุนัขตัวที่ 3 (เยอรมันเชพเพิร์ด)
ShipmentRoute vehicleStartTime การประทับเวลา ซึ่งเป็นเวลาที่ยานพาหนะเริ่มออกเดินทาง สำหรับสถานการณ์ของศูนย์รับฝากสุนัขนี้ คนขับเริ่มขับรถตู้เวลา 07:55 น.
vehicleEndTime การประทับเวลา นี่คือเวลาที่ยานพาหนะสิ้นสุดเส้นทาง สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ คนขับจะขับรถตู้เสร็จตอน 9:40 น.
visits อาร์เรย์ของออบเจ็กต์ (Visit) นี่คือรายการการรับและการนำส่งตามลำดับในเส้นทาง สำหรับสถานการณ์การรับฝากเลี้ยงสุนัขนี้ นี่คือลำดับการรับและส่งสุนัขทั้ง 2 ตัว
transitions อาร์เรย์ของออบเจ็กต์ (Transition) นี่คือรายการตามลำดับของระยะทาง รวมถึงเวลาเดินทางและเวลารอระหว่างการเข้าชม สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ ข้อมูลนี้จะแสดงรายละเอียดระยะทางและเวลาในการขับรถระหว่าง Coit Tower, South Sunset Playground Park และศูนย์รับเลี้ยงสุนัข
metrics ออบเจ็กต์ (AggregatedMetrics) เมตริกเหล่านี้เป็นเมตริกเฉพาะสำหรับเส้นทางเดียวนี้ สำหรับสถานการณ์ของศูนย์รับฝากสุนัขนี้ สถิติเหล่านี้เป็นของรถตู้คันนี้โดยเฉพาะ เมตริกเหล่านี้อิงตามค่าใช้จ่ายที่คุณระบุในคำขอ ดูรายละเอียดเพิ่มเติมได้ในเอกสารแนวคิดหลักของรูปแบบต้นทุน
routeCosts ออบเจ็กต์ (แผนที่) นี่คือรายละเอียดค่าใช้จ่ายที่เฉพาะเจาะจงสำหรับเส้นทางนี้ สำหรับสถานการณ์ของศูนย์รับฝากสุนัขนี้ ข้อมูลนี้แสดงต้นทุนที่คำนวณจากค่าจ้างของคนขับรถที่ 27 ดอลลาร์ต่อชั่วโมง
routeTotalCost ตัวเลข นี่คือค่าใช้จ่ายทั้งหมดสำหรับเส้นทางที่เฉพาะเจาะจงนี้ สำหรับสถานการณ์การรับฝากสุนัขนี้ ต้นทุนรวมคือ 47.22 สำหรับเส้นทางของรถตู้คันนี้
vehicleFullness ออบเจ็กต์ (VehicleFullness) ข้อมูลนี้แสดงรายละเอียดว่ายานพาหนะเข้าใกล้ขีดจำกัดในการทำงานมากน้อยเพียงใด เช่น เวลา ระยะทาง และน้ำหนักบรรทุก สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ มีเพียงเวลาเริ่มต้นและสิ้นสุดของกะเท่านั้นที่จำกัดคนขับ ดังนั้นเครื่องมือเพิ่มประสิทธิภาพจึงคำนวณ vehicleFullness เป็นเศษส่วนของระยะเวลาเส้นทางจริงและเวลาสูงสุดที่ใช้ได้สำหรับกะของคนขับ
Visit shipmentIndex จำนวนเต็ม นี่คือดัชนีแบบ Zero-Based ของการจัดส่งในคำขอเดิม สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ 0 หมายถึงสุนัขพันธุ์เบอร์นีส เมาน์เทนด็อก และ 1 หมายถึงสุนัขพันธุ์ชิวาวา
isPickup บูลีน ช่องนี้จะเป็นจริงหากการเข้าชมนี้เป็นการรับสินค้า สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ ค่าจะเป็นจริงเมื่อรับสุนัข และเป็นเท็จ (หรือไม่มี) เมื่อส่งสุนัขที่ศูนย์รับเลี้ยง
startTime การประทับเวลา นี่คือเวลาเริ่มต้นโดยประมาณของการเข้าชม สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ เหตุการณ์นี้จะเกิดขึ้นเมื่อคนขับรถเคาะประตู
detour ระยะเวลา นี่คือเวลาเพิ่มเติมที่เครื่องมือเพิ่มประสิทธิภาพเพิ่มให้กับการเดินทางของการจัดส่งนี้โดยเฉพาะ การอ้อมคือความแตกต่างระหว่างแผนเส้นทางจริงกับการเดินทางตรงที่เหมาะสมที่สุดในกรณีที่คนขับไม่มีการจัดส่งหรืองานอื่นๆ ที่ต้องทำให้เสร็จ

สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ การเข้าชมครั้งแรกซึ่งเป็นการไปรับสุนัขพันธุ์เบอร์นีส เมาน์เทนด็อก มีการอ้อมเป็น 0 เนื่องจากคนขับเดินทางจากศูนย์รับเลี้ยงสุนัขไปยังจุดรับนี้โดยตรง สำหรับการรับชิวาวา การอ้อมจะใช้เวลา 43 นาทีเนื่องจากคนขับต้องไปรับเบอร์นีส เมาน์เทนด็อกก่อน (และใช้เวลา 5 นาทีในการรับขึ้นรถ)
shipmentLabel สตริง นี่คือป้ายกำกับจากคำขอสำหรับการจัดส่งแต่ละรายการ สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ ป้ายกำกับคือ "ชิวาวา" หรือ "เบอร์นีส เมาน์เทนด็อก"
visitType สตริง (Enum) ซึ่งระบุประเภทการเข้าชม ซึ่งอาจเป็น PICKUP_SHIPMENT สำหรับการรับสินค้าหรือ DELIVER_SHIPMENT สำหรับการนำส่ง สำหรับสถานการณ์นี้ จะเป็น PICKUP_SHIPMENT หรือ DELIVER_SHIPMENT
Transition travelDuration ระยะเวลา นี่คือเวลาที่ใช้ในการเดินทางระหว่างการเข้าชมแต่ละครั้ง ตัวอย่างเช่น ในสถานการณ์รับเลี้ยงสุนัขนี้ คนขับใช้เวลาประมาณ 25 นาทีในการขับรถจากสถานรับเลี้ยงสุนัขไปยัง Coit Tower เพื่อรับสุนัขพันธุ์เบอร์นีส เมาน์เทนด็อก
travelDistanceMeters จำนวนเต็ม นี่คือระยะทางที่เดินทางเป็นเมตรระหว่างการเปลี่ยนนี้ ตัวอย่างเช่น ในสถานการณ์การรับเลี้ยงสุนัขนี้ คนขับเดินทางเป็นระยะทาง 7 กิโลเมตรจากศูนย์รับเลี้ยงสุนัขไปยัง Coit Tower เพื่อรับสุนัขพันธุ์เบอร์นีส เมาน์เทนด็อก
waitDuration ระยะเวลา ซึ่งเป็นเวลาที่ใช้ในการรอก่อนการรับหรือการนำส่งครั้งถัดไป สำหรับสถานการณ์ศูนย์รับฝากสุนัขนี้ ระยะเวลาดังกล่าวคือ 6 นาที (356 วินาที) สำหรับการเปลี่ยนผ่านครั้งที่ 3 เนื่องจากคนขับมาถึงศูนย์รับฝากสุนัขก่อนกรอบเวลาส่งสุนัขจะเปิดในเวลา 09:30 น. สำหรับการเปลี่ยนผ่านอื่นๆ ค่านี้จะเป็น 0
totalDuration ระยะเวลา นี่คือระยะเวลาทั้งหมดของการเปลี่ยนผ่าน ซึ่งรวมถึงการขับรถและการรอ ตัวอย่างเช่น คนขับใช้เวลา 25 นาที (ขับรถ 25 นาทีและรอ 0 นาที) ในการเปลี่ยนเส้นทางครั้งแรก และใช้เวลา 27 นาที (ขับรถ 21 นาทีและรอ 6 นาที) ในการเปลี่ยนเส้นทางครั้งที่ 3 เพื่อกลับไปยังสถานรับเลี้ยงเด็ก
startTime การประทับเวลา เวลาที่เริ่มเดินทาง ซึ่งจะตรงกับเวลาที่เสร็จสิ้นการเข้าชมก่อนหน้า (หรือเวลาเริ่มต้นของยานพาหนะสำหรับการเปลี่ยนครั้งแรก) สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัข การเปลี่ยนสถานะครั้งแรกจะเริ่มที่เวลา 07:55 น. เมื่อคนขับออกจากศูนย์รับเลี้ยง และการเปลี่ยนสถานะครั้งที่ 2 จะเริ่มที่เวลา 08:25 น. เมื่อคนขับออกจาก Coit Tower
Metrics aggregatedRouteMetrics ออบเจ็กต์ (AggregatedMetrics) ซึ่งเป็นผลรวมของเมตริกในทุกเส้นทาง สำหรับสถานการณ์ของศูนย์รับเลี้ยงสุนัขนี้ เมตริกทั้งหมดสำหรับรถตู้ 1 คันมีดังนี้
usedVehicleCount จำนวนเต็ม นี่คือจำนวนยานพาหนะที่ใช้ในโซลูชัน สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ คุณใช้รถตู้เพียงคันเดียว
earliestVehicleStartTime การประทับเวลา นี่คือเวลาเริ่มต้นที่เร็วที่สุดในบรรดายานพาหนะทั้งหมด สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ เส้นทางของรถตู้จะเริ่มต้นเวลา 07:55 น.
latestVehicleEndTime การประทับเวลา นี่คือเวลาสิ้นสุดล่าสุดของรถทุกคัน สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ เส้นทางของรถตู้จะสิ้นสุดที่เวลา 09:40 น.
totalCost ตัวเลข ซึ่งเป็นค่าใช้จ่ายทั้งหมดของโซลูชัน สำหรับสถานการณ์การรับฝากสุนัขนี้ แผนเส้นทางทั้งหมดมีค่าใช้จ่าย 147.22 ต่อวัน (รวมค่าจ้างคนขับ 47.22 และค่าปรับสำหรับการจัดส่งที่ข้ามไป 100)
costs ออบเจ็กต์ (แผนที่) นี่คือรายละเอียดค่าใช้จ่ายทั้งหมดตามหมวดหมู่ สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ เครื่องมือเพิ่มประสิทธิภาพจะคำนวณต้นทุนของเส้นทางโดยอิงตามต้นทุนต่อชั่วโมงและต้นทุนค่าปรับสำหรับสุนัขพันธุ์เยอรมันเชพเพิร์ดที่ข้ามไป
AggregatedMetrics performedShipmentCount จำนวนเต็ม จำนวนการจัดส่งที่กำหนดเส้นทางสำเร็จ สำหรับสถานการณ์การรับฝากสุนัขนี้ คนขับจะขนส่งสุนัข 2 ตัว
travelDuration ระยะเวลา นี่คือเวลาทั้งหมดที่ใช้ในการเดินทาง สำหรับสถานการณ์การรับเลี้ยงสุนัขนี้ คนขับจะเดินทางเป็นเวลา 79 นาที
waitDuration ระยะเวลา ซึ่งเป็นเวลารอทั้งหมด สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ คนขับจะจอดรถโดยไม่ดับเครื่องเป็นเวลา 6 นาที (356 วินาที) ที่ศูนย์รับเลี้ยงสุนัขเพื่อรอให้ถึงช่วงเวลาส่งสุนัข
delayDuration ระยะเวลา นี่คือระยะเวลาเพิ่มเติมที่คุณกำหนดโดยใช้แอตทริบิวต์การเปลี่ยนสถานะ เช่น เวลาที่สำรองไว้สำหรับการจอดรถ สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ คุณไม่ได้กำหนดแอตทริบิวต์การเปลี่ยนผ่านในคำขอ ดังนั้นค่านี้จึงเป็น 0
breakDuration ระยะเวลา นี่คือเวลาทั้งหมดที่ใช้ในช่วงพัก สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ จะไม่มีการหยุดพัก
visitDuration ระยะเวลา ซึ่งเป็นเวลาทั้งหมดที่ใช้ในการให้บริการระหว่างการเข้าชม สำหรับสถานการณ์ศูนย์รับฝากสุนัขนี้ ระยะเวลาคือ 20 นาที (5 นาทีต่อการเข้าชม 4 ครั้ง)
totalDuration ระยะเวลา ซึ่งเป็นผลรวมของคอมโพเนนต์ระยะเวลาทั้งหมด สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ ระยะเวลารวมคือ 105 นาที (6, 296 วินาที)
travelDistanceMeters จำนวนเต็ม นี่คือระยะทางรวมในการเดินทางเป็นเมตร สำหรับสถานการณ์ศูนย์รับเลี้ยงสุนัขนี้ คนขับจะเดินทางเป็นระยะทางรวม 31.5 กม.
performedShipmentPenaltyCostSum ดับเบิล ซึ่งเป็นผลรวมของค่าใช้จ่ายในการปรับของการจัดส่งที่ดำเนินการทั้งหมด สำหรับสถานการณ์นี้ ค่าใช้จ่ายคือ 2000 เนื่องจากคนขับรับสุนัขพันธุ์เบอร์นีสเมาน์เทนด็อกและชิวาวา (แต่ละตัวมีค่าใช้จ่ายในการลงโทษ 1000)
VehicleFullness maxFullness ตัวเลข ซึ่งเป็นอัตราส่วนการใช้งานสูงสุดในทุกช่อง VehicleFullness สำหรับสถานการณ์ศูนย์รับฝากสุนัขนี้ ค่านี้คือ 0.35 เนื่องจากคนขับรถตู้ทำงานเพียง 105 นาทีจากกะเช้าทั้งหมด ซึ่งคุณกำหนดไว้เป็น 5 ชั่วโมงในคำขอ
activeSpan ตัวเลข ซึ่งเป็นอัตราส่วนของระยะเวลาการทำงานทั้งหมดของคนขับเทียบกับเวลาทำการของแผนเส้นทาง ตัวเลขที่ต่ำกว่าหมายความว่าคนขับใช้เวลาในวันทำการน้อยลงในการขับขี่ยานพาหนะ สำหรับสถานการณ์ของศูนย์รับฝากสุนัขนี้ ค่านี้คือ 0.35 เนื่องจากคนขับรถตู้เป็นเวลา 105 นาทีในช่วงกะ 5 ชั่วโมง
SkippedShipment index จำนวนเต็ม นี่คือดัชนีแบบ Zero-Based ของการจัดส่งในคำขอเดิม สำหรับสถานการณ์นี้ 2 หมายถึงเยอรมันเชพเพิร์ด
label สตริง นี่คือป้ายกำกับที่คุณระบุสำหรับการจัดส่งในคำขอ
penaltyCost ตัวเลข นี่คือค่าปรับที่คุณต้องจ่ายเมื่อเครื่องมือเพิ่มประสิทธิภาพข้ามการจัดส่งนี้ ซึ่งตรงกับ penaltyCost ที่คุณระบุในคำขอ