โครงสร้างพื้นฐาน (ShipmentModel, Shipment และ Vehicle)

ShipmentModel มีออบเจ็กต์ `shipments` 1 รายการที่มีประเภทข้อความ `Shipment` และออบเจ็กต์ `vehicles` 1 รายการที่มีประเภทข้อความ `Vehicle`

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

โครงสร้างพื้นฐานของออบเจ็กต์ OptimizeToursRequest มีดังนี้

  • ฟิลด์ model มีข้อความ ShipmentModel ที่มีฟิลด์คีย์ 2 รายการ ดังนี้
    • ฟิลด์ shipments หนึ่งฟิลด์ซึ่งมีข้อความ Shipment อย่างน้อย 1 ข้อความ
    • ฟิลด์ vehicles หนึ่งฟิลด์ซึ่งมีข้อความ Vehicle อย่างน้อย 1 ข้อความ

เอกสารนี้อธิบายข้อความประเภทต่อไปนี้

  • ShipmentModel: มีรายการการจัดส่ง ยานพาหนะที่พร้อมให้บริการ และ ออบเจ็กต์อื่นๆ ที่อธิบายความสัมพันธ์ของรายการเหล่านั้น
  • Shipment: อธิบายสถานที่ที่ยานพาหนะจะไป โดยอาจแสดงถึงพัสดุจริงที่ต้องไปรับและนำส่ง หรือสถานที่ที่คนขับยานพาหนะ ให้บริการ
  • Vehicle: อธิบายวิธีการขนส่งระหว่างสถานที่จัดส่ง ยานพาหนะแต่ละคันจะสอดคล้องกับยานพาหนะจริงหรือบุคคลที่เคลื่อนที่ ไปมาด้วยการเดินเท้า

ShipmentModel

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

ตารางด้านล่างอธิบายพร็อพเพอร์ตี้ที่เกี่ยวข้องบางอย่างของ ShipmentModel

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

ดูรายการพร็อพเพอร์ตี้ทั้งหมดใน ShipmentModel ได้ในเอกสารอ้างอิง

ShipmentModel ตัวอย่าง

ในตัวอย่างนี้ คุณมีบริการรับฝากสุนัขและกำลังเริ่มสร้างคำขอ คุณจะกำหนดการจัดส่งและยานพาหนะในภายหลัง แต่ต้องการเริ่มต้นด้วยการตั้งเวลาทำการและต้นทุนการดำเนินงานรายชั่วโมง

สำหรับตัวอย่างนี้ ค่าพร็อพเพอร์ตี้ ShipmentModel ในคำขอของคุณคือค่าต่อไปนี้

พร็อพเพอร์ตี้ ค่า คำอธิบาย
globalStartTime 2024-02-13T00:00:00.000Z วันที่และเวลาเริ่มต้นของเวลาทำการ
globalEndTime 2024-02-14T06:00:00.000Z วันที่และเวลาสิ้นสุดของเวลาทำการ

ต่อไปนี้คือตัวอย่างโค้ดของข้อความ ShipmentModel ที่รวมค่าสถานการณ์ตัวอย่าง

{
  "model": {
    "shipments": [
      ...
    ],
    "vehicles": [
      ...
    ],
   "globalStartTime": "2024-02-13T00:00:00.000Z",
   "globalEndTime": "2024-02-14T06:00:00.000Z"
  }
}

Shipment

ประเภทข้อความ Shipment จะกำหนดโครงสร้างพร็อพเพอร์ตี้ของการจัดส่งที่ สามารถนำส่งได้หรือบริการที่สามารถดำเนินการในเส้นทางได้

การจัดส่งจริง 1 รายการเท่ากับข้อความ `Shipment` 1 รายการ ซึ่งอยู่ในออบเจ็กต์ `shipments`

ดังที่แสดงในแผนภาพ

  • ข้อความ Shipment มีข้อมูลทั้งหมดของการจัดส่งหรือบริการในชีวิตจริง
  • ข้อความ Shipment ทั้งหมดจะระบุไว้ในช่อง shipments
  • ฟิลด์ shipments มีข้อความ Shipment อย่างน้อย 1 รายการ

ข้อความ Shipment ต้องมีออบเจ็กต์ pickups หรือ deliveries อย่างน้อย 1 รายการ คำจำกัดความของออบเจ็กต์เหล่านี้มีดังนี้

  • pickups ระบุสถานที่รับสินค้าของการจัดส่ง
  • deliveries กำหนดสถานที่นำส่งของการจัดส่ง
  • ทั้ง pickups และ deliveries มีข้อความประเภท VisitRequest ที่ กำหนดตำแหน่งและรายละเอียดอื่นๆ

ตารางต่อไปนี้อธิบายสถานการณ์ต่างๆ ตามการกำหนดค่าของ pickups และ deliveries ในข้อความ Shipment

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

ดูรายการพร็อพเพอร์ตี้ทั้งหมดใน Shipment ได้ในเอกสารอ้างอิง

Shipment ตัวอย่าง

ในตัวอย่างนี้ คุณมีบริการรับส่งสุนัขจากบ้านไปที่ศูนย์รับฝากสุนัข คุณต้องการตั้งค่าสถานที่รับ ของสุนัข 2 ตัว และตั้งค่าสถานที่นำส่งเป็นธุรกิจของคุณ

  • บ้านของสุนัขตัวแรกอยู่ใน Coit Tower ซานฟรานซิสโก พิกัดของสถานที่นี้คือละติจูด 37.8024 และลองจิจูด -122.4058
  • บ้านหลังที่ 2 ของสุนัขอยู่ในสวนสาธารณะ South Sunset Playground ในซานฟรานซิสโก พิกัดของสถานที่นี้คือละติจูด 37.7359 และลองจิจูด -122.5011
  • รับเลี้ยงสุนัขแบบไปกลับของคุณอยู่ใน Mission Dolores Park, San Francisco พิกัดของสถานที่นี้คือละติจูด 37.759773 และลองจิจูด -122.427063

ต่อไปนี้คือตัวอย่างโค้ดของข้อความ Shipment ซึ่งออบเจ็กต์ shipments มีข้อความประเภท Shipment 2 รายการที่มีพิกัดตัวอย่าง

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.8024,
              "longitude": -122.4058
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
      },
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.7359,
              "longitude": -122.5011
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
      }
    ],
    "vehicles": [
    ...
    ]
  }
}

Vehicle

ประเภทข้อความ Vehicle จะกำหนดโครงสร้างพร็อพเพอร์ตี้ของยานพาหนะที่สามารถ ทำการจัดส่งในเส้นทาง

ยานพาหนะในชีวิตจริง 1 คันเท่ากับข้อความ `Vehicle` 1 ข้อความ ซึ่งอยู่ในออบเจ็กต์ `vehicles`

ดังที่แสดงในแผนภาพ

  • ข้อความ Vehicle มีข้อมูลทั้งหมดของยานพาหนะในชีวิตจริง
  • ข้อความ Vehicle ทั้งหมดจะระบุไว้ในช่อง vehicles
  • ฟิลด์ vehicles มีข้อความ Vehicle หลายรายการ

ตารางต่อไปนี้อธิบายพร็อพเพอร์ตี้ที่เกี่ยวข้องบางอย่างของ Vehicle

พร็อพเพอร์ตี้ คำอธิบาย
startLocation และ endLocation ตำแหน่งเริ่มต้นและตำแหน่งสิ้นสุดของยานพาหนะ ซึ่งเป็นส่วนหนึ่งของเส้นทางที่เพิ่มประสิทธิภาพสุดท้าย หากไม่ได้กำหนดไว้ ระบบจะใช้ค่าเริ่มต้นเป็นสถานที่รับสินค้าสำหรับการจัดส่งครั้งแรกและสถานที่นำส่งสำหรับการจัดส่งครั้งสุดท้าย
costPerHour, costPerKilometer, costPerTraveledHour พารามิเตอร์ต้นทุนเฉพาะยานพาหนะ เราขอแนะนำให้คุณมีพารามิเตอร์ต้นทุนอย่างน้อย 1 รายการในคำขอเพื่อให้ API แสดงเส้นทางที่เพิ่มประสิทธิภาพแล้ว ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าใช้จ่ายได้ที่แนวคิดหลักของรูปแบบต้นทุน
startTimeWindows และ endTimeWindows กำหนดระยะเวลาที่ยานพาหนะสามารถวิ่งในเส้นทางได้ โดยต้องอยู่ในกรอบเวลา globalStartTime และ globalEndTime ที่ตั้งไว้ใน ShipmentModel แม้ว่าพร็อพเพอร์ตี้นี้จะไม่บังคับ แต่ขอแนะนำให้ระบุเนื่องจากเครื่องมือเพิ่มประสิทธิภาพจะทำงานได้ดีที่สุดเมื่อปฏิบัติตามข้อจำกัดด้านเวลา

Vehicle ตัวอย่าง

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

สำหรับตัวอย่างนี้ ค่าพร็อพเพอร์ตี้ Vehicle ในคำขอของคุณคือค่าต่อไปนี้

พร็อพเพอร์ตี้ ค่า คำอธิบาย
startLocation latitude: 37.759773, longitude: -122.427063 พิกัดเริ่มต้นของเส้นทางสำหรับยานพาหนะ ซึ่งตรงกับสถานที่ตั้งของธุรกิจรับเลี้ยงสุนัขแบบไปกลับของคุณที่อยู่ใน Mission Dolores Park, San Francisco
endLocation latitude: 37.759773, longitude: -122.427063 พิกัดปลายทางของเส้นทางสำหรับยานพาหนะ ซึ่งตรงกับสถานที่ตั้งของธุรกิจรับเลี้ยงสุนัขแบบไปกลับของคุณที่อยู่ใน Mission Dolores Park, San Francisco
costPerHour 27 คุณจ่ายค่าจ้างคนขับรถรับส่งสุนัขเท่าไหร่ คุณจ่ายเงินให้คนขับ 27 ดอลลาร์ต่อชั่วโมง

ต่อไปนี้คือตัวอย่างโค้ดของข้อความ Vehicle ที่รวมค่าสถานการณ์ตัวอย่าง

{
  "model": {
    "shipments": [
    ...
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "endLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "costPerHour": 27
      }
    ]
  }
}

ดูรายการพร็อพเพอร์ตี้ทั้งหมดใน Vehicle ได้ในเอกสารอ้างอิง

ตัวอย่างคำขอที่สมบูรณ์

ตัวอย่างโค้ดต่อไปนี้แสดงตัวอย่างคำขอที่สมบูรณ์ โดยรวมตัวอย่าง ShipmentModel, Shipment และ Vehicle ที่แสดงในเอกสารนี้

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.8024,
              "longitude": -122.4058
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
      },
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.7359,
              "longitude": -122.5011
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "endLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "costPerHour": 27
      }
    ],
    "globalStartTime": "2024-02-13T00:00:00.000Z",
    "globalEndTime": "2024-02-14T06:00:00.000Z"
  }
}