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

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

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

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

  • ช่อง model มีข้อความ ShipmentModel ซึ่งมีช่องสำคัญ 2 ช่อง ดังนี้
    • ฟิลด์ shipments 1 ฟิลด์ ซึ่งมีข้อความ Shipment 1 ข้อความหรือหลายข้อความ
    • ฟิลด์ vehicles 1 ฟิลด์ ซึ่งมีข้อความ 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 จะกำหนดโครงสร้างพร็อพเพอร์ตี้ของการจัดส่งที่สามารถนำส่งได้หรือบริการที่สามารถดำเนินการได้ในเส้นทางหนึ่งๆ

การจัดส่งจริงจะเท่ากับข้อความ `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 ตัว และกำหนดสถานที่ส่งเป็นธุรกิจของคุณ โดยทำดังนี้

  • บ้านของสุนัขตัวแรกอยู่ที่หอคอยคอยต์ในซานฟรานซิสโก พิกัดของสถานที่นี้คือละติจูด 37.8024 และลองจิจูด -122.4058
  • บ้านของสุนัขตัวที่ 2 อยู่ใน South Sunset Playground Park, ซานฟรานซิสโก พิกัดของสถานที่นี้คือละติจูด 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 จะกำหนดโครงสร้างพร็อพเพอร์ตี้ของยานพาหนะที่สามารถจัดส่งในเส้นทางได้

ยานพาหนะในชีวิตจริงเท่ากับข้อความ `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"
  }
}