โครงสร้างพื้นฐาน (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 กำหนดโครงสร้างพร็อพเพอร์ตี้ของการจัดส่งที่ สามารถนำส่งได้หรือบริการที่สามารถดำเนินการได้ในเส้นทาง

การจัดส่งจริง 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, San Francisco พิกัดของสถานที่นี้คือละติจูด 37.8024 และลองจิจูด -122.4058
  • บ้านของสุนัขตัวที่ 2 อยู่ที่ South Sunset Playground Park, San Francisco พิกัดของสถานที่นี้คือละติจูด 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"
  }
}