วัตถุประสงค์ของ 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 ตัว และกำหนดสถานที่ส่งเป็นธุรกิจของคุณ โดยทำดังนี้
- บ้านของสุนัขตัวแรกอยู่ที่หอคอยคอยต์ในซานฟรานซิสโก พิกัดของสถานที่นี้คือละติจูด 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มีข้อมูลทั้งหมดของยานพาหนะในชีวิตจริง - ข้อความ
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" } }