วัตถุประสงค์ของ Route Optimization API คือการวางแผนเส้นทางสำหรับยานพาหนะหลายคันเพื่อไปยังสถานที่ต่างๆ ออบเจ็กต์ OptimizeToursRequest อธิบายพร็อพเพอร์ตี้ของยานพาหนะและสถานที่เหล่านี้ และเป็นโครงสร้างหลักของส่วนเนื้อหาคำขอของทุกปลายทาง
โครงสร้างพื้นฐาน ของออบเจ็กต์ OptimizeToursRequest มีลักษณะดังนี้
- ฟิลด์
modelมีข้อความShipmentModelซึ่งมีฟิลด์สำคัญ 2 ฟิลด์ ได้แก่
เอกสารนี้อธิบายประเภทข้อความต่อไปนี้
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มีข้อมูลทั้งหมดของการจัดส่งหรือ บริการในชีวิตจริง - ข้อความ
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 กำหนดโครงสร้างพร็อพเพอร์ตี้ของยานพาหนะที่สามารถ
ทำการจัดส่งในเส้นทางได้
ดังที่แสดงในแผนภาพ
- ข้อความ
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" } }