กรอบเวลาจะระบุเวลาสำหรับเหตุการณ์ในเส้นทาง เหตุการณ์เหล่านี้อาจรวมถึง จุดเริ่มต้นและจุดสิ้นสุดของเส้นทางของคนขับ เวลาที่กำหนดสำหรับการรับและนำส่ง หรือ ระยะเวลาของเส้นทางทั้งหมด
กรอบเวลาช่วยสนับสนุนวัตถุประสงค์ต่างๆ ได้ เช่น
- จัดลำดับความสำคัญของการรับและนำส่งให้เสร็จสิ้นภายในกรอบเวลาที่ระบุ
- วางแผนเส้นทางให้ดำเนินการภายในเวลาทำการโดยรวม
- ตรวจสอบว่ายานพาหนะเริ่มและสิ้นสุดเส้นทางภายในกรอบเวลาที่ระบุ
โครงสร้าง
ดังที่แสดงในแผนภาพ กรอบเวลามีโครงสร้างดังนี้
- globalStartTimeและ- globalEndTimeเป็นพร็อพเพอร์ตี้ของ- ShipmentModel
- timeWindowsเป็นพร็อพเพอร์ตี้ของ- pickupsภายใน- Shipment
- deliveriesภายใน- Shipment
 
- startTimeWindowsและ- endTimeWindowsเป็นพร็อพเพอร์ตี้ของ- Vehicle
รายการตรวจสอบ Essentials
รายการตรวจสอบต่อไปนี้อธิบายความรู้ที่จำเป็นซึ่งจะช่วยป้องกันข้อผิดพลาดที่อาจเกิดขึ้นเกี่ยวกับกรอบเวลา รายการนี้จะช่วยให้คุณตรวจสอบคำขอและแก้ปัญหาการตอบกลับได้
พร็อพเพอร์ตี้
ตารางต่อไปนี้อธิบายพร็อพเพอร์ตี้ของกรอบเวลาทั่วโลก
| พร็อพเพอร์ตี้ | รูปแบบ | คำอธิบาย | 
|---|---|---|
| globalStartTime | Timestamp | เวลาที่เร็วที่สุดสำหรับกิจกรรม | 
| globalEndTime | Timestamp | เวลาล่าสุดของกิจกรรม | 
ตารางต่อไปนี้อธิบายพร็อพเพอร์ตี้ช่วงเวลาในการจัดส่งและยานพาหนะ
| ผู้ปกครอง | พร็อพเพอร์ตี้ | รูปแบบ | คำอธิบาย | 
|---|---|---|---|
| Shipment.pickups | timeWindows | อาร์เรย์ของ TimeWindowประเภทข้อความ | ระบุช่วงเวลาสำหรับการรับสินค้าที่จัดส่ง | 
| Shipment.deliveries | timeWindows | ระบุช่วงเวลาสำหรับการนำส่งสินค้า | |
| Vehicle | startTimeWindows | ระบุเวลาเริ่มต้นของกำหนดเวลาการทำงานของยานพาหนะ | |
| endTimeWindows | ระบุเวลาสิ้นสุดของกำหนดเวลาการทำงานของยานพาหนะ | 
ตารางต่อไปนี้อธิบายพร็อพเพอร์ตี้ของประเภทข้อความ TimeWindow
| พร็อพเพอร์ตี้ | รูปแบบ | คำอธิบาย | 
|---|---|---|
| startTime | สตริง (รูปแบบ RFC3339 UTC "Zulu") | จุดเริ่มต้นของกรอบเวลา | 
| endTime | สตริง (รูปแบบ RFC3339 UTC "Zulu") | จุดสิ้นสุดของกรอบเวลา | 
ตัวอย่าง
ส่วนนี้จะครอบคลุมตัวอย่าง 3 ประเภท ได้แก่
- ตัวอย่างโค้ดที่แสดงโครงสร้างของกรอบเวลา
- ตัวอย่างสถานการณ์ที่แสดงวิธีหนึ่งในการใช้กรอบเวลาเพื่อให้บรรลุวัตถุประสงค์ทางธุรกิจ
- ตัวอย่างคำขอที่มีค่าที่ตั้งไว้ใน สถานการณ์ตัวอย่าง
ตัวอย่างโค้ด
ส่วนต่อไปนี้แสดงตัวอย่างโค้ดของกรอบเวลาประเภทต่างๆ
ช่วงเวลาทั่วโลก
ตัวอย่างโค้ดต่อไปนี้แสดงโครงสร้างของกรอบเวลาทั่วโลก
{ "model": { "globalStartTime": "YYYY-MM-DDTHH:MM:SSZ", "globalEndTime": "YYYY-MM-DDTHH:MM:SSZ", "shipments": [ ... ], "vehicles": [ ... ] } }
กรอบเวลาในการรับสินค้าและการนำส่ง
ตัวอย่างโค้ดต่อไปนี้แสดงโครงสร้างของกรอบเวลาในการรับและนำส่งของ การจัดส่ง
{ "model": { "shipments": [ { "pickups": [ { "timeWindows": [ { "startTime": "YYYY-MM-DDTHH:MM:SSZ", "endTime": "YYYY-MM-DDTHH:MM:SSZ" } ] } ], "deliveries": [ { "timeWindows": [ { "startTime": "YYYY-MM-DDTHH:MM:SSZ", "endTime": "YYYY-MM-DDTHH:MM:SSZ" } ] } ] } ], "vehicles": [ ... ] } }
กรอบเวลาของยานพาหนะ
ตัวอย่างโค้ดต่อไปนี้แสดงโครงสร้างของกรอบเวลาของยานพาหนะ
{ "model": { "shipments": [ ... ], "vehicles": [ { "startTimeWindows": [ { "startTime": "YYYY-MM-DDTHH:MM:SSZ", "endTime": "YYYY-MM-DDTHH:MM:SSZ" } ], "endTimeWindows": [ { "startTime": "YYYY-MM-DDTHH:MM:SSZ", "endTime": "YYYY-MM-DDTHH:MM:SSZ" } ] } ] } }
สถานการณ์ตัวอย่าง
ส่วนนี้ใช้สถานการณ์ทางธุรกิจของสถานรับฝากสุนัข ตัวอย่างนี้จะเพิ่มประสิทธิภาพเส้นทางสำหรับการรับและส่งสุนัขจากบ้าน 2 หลังที่แตกต่างกัน และเจ้าของมีช่วงเวลารับและส่งที่เหมือนกัน เครื่องมือเพิ่มประสิทธิภาพควร คำนึงถึงเวลาทำการของสถานรับเลี้ยงเด็ก ช่วงเวลาที่ลูกค้าจะมารับและส่ง บุตรหลาน รวมถึงเวลาทำการของคนขับ
สำหรับตัวอย่างนี้ ค่าพร็อพเพอร์ตี้ในคำขอมีดังนี้
| ผู้ปกครอง | พร็อพเพอร์ตี้ | ค่า | สถานการณ์ | 
|---|---|---|---|
| ShipmentModel | globalStartTime | 2023-01-13T07:00:00Z | แสดงเวลาเปิดทำการของสถานรับเลี้ยงสุนัข โดยจะไม่มีการรับหรือนำส่งก่อนเวลานี้ | 
| ShipmentModel | globalEndTime | 2023-01-13T19:00:00Z | แสดงเวลาปิดของสถานรับเลี้ยงสุนัข การรับและการนำส่งทั้งหมดต้องเสร็จสิ้นภายในเวลานี้ | 
| Shipment.pickups | timeWindows | startTime:2023-01-13T07:30:00Z | กำหนดกรอบเวลาที่ยอมรับได้สำหรับการรับสุนัขจากบ้านของลูกค้า ในตัวอย่างนี้ คุณบอกให้ลูกค้าทั้ง 2 รายพร้อมรับสินค้าในช่วงเวลา 07:30 น. - 09:00 น. | 
| endTime:2023-01-13T09:00:00Z | |||
| Shipment.deliveries | timeWindows | startTime:2023-01-13T17:00:00Z | กำหนดช่วงเวลาที่ยอมรับได้สำหรับการนำสุนัขไปส่งที่บ้านของลูกค้า ในตัวอย่างนี้ คุณได้แจ้งให้ลูกค้าทั้ง 2 รายทราบว่าคุณจะนำสุนัขไปส่งระหว่างเวลา 17:00 น. ถึง 18:30 น. | 
| endTime:2023-01-13T18:30:00Z | |||
| Vehicle | startTimeWindows | startTime:2023-01-13T07:00:00ZendTime:2023-01-13T07:15:00Z | กำหนดกรอบเวลาที่ยอมรับได้สำหรับรถยนต์ในการเริ่ม (07:00 น. ถึง 07:15 น.) และสิ้นสุด (17:00 น. ถึง 17:15 น.) | 
| endTimeWindows | startTime:2023-01-13T18:45:00ZendTime:2023-01-13T19:00:00Z | 
แผนภาพต่อไปนี้แสดงช่วงเวลาที่ส่งผลต่อเส้นทางนี้
ในสถานการณ์นี้ ตามที่แสดงในแผนภาพ ช่วงเวลาจะทำงานดังนี้
- กรอบเวลาส่วนกลางแสดงเวลาทำการของธุรกิจรับฝากสุนัข และกรอบเวลาอื่นๆ ทั้งหมดต้องอยู่ภายในกรอบเวลานี้
- การรับและการนำส่งจะมีtimeWindowsของตัวเองที่จุดเริ่มต้นและจุดสิ้นสุดของวันตามลำดับ
- startTimeWindowsของยานพาหนะจะกำหนดกรอบเวลาที่ผู้ควบคุมยานพาหนะต้องเริ่มทำงาน และ- endTimeWindowsจะกำหนดกรอบเวลาอีกกรอบหนึ่งที่ผู้ควบคุมยานพาหนะต้องทำงานให้เสร็จสิ้น
- เวลาเริ่มต้นของstartTimeWindowรายการแรกและเวลาสิ้นสุดของendTimeWindowรายการสุดท้าย จะกำหนดเวลาทำการของยานพาหนะ ซึ่งในกรณีนี้จะ เหมือนกับช่วงเวลาทั่วโลก
ตัวอย่างคำขอ
ตัวอย่างต่อไปนี้แสดงโครงสร้างของoptimizeToursคำขอ
ซึ่งรวมค่าช่วงเวลาของสถานการณ์ตัวอย่าง
{ "model": { "globalStartTime": "2023-01-13T07:00:00Z", "globalEndTime": "2023-01-13T19:00:00Z", "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 }, "timeWindows": [ { "startTime": "2023-01-13T07:30:00Z", "endTime": "2023-01-13T09:00:00Z" } ] } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "timeWindows": [ { "startTime": "2023-01-13T17:00:00Z", "endTime": "2023-01-13T18:30:00Z" } ] } ] }, { "pickups": [ { "arrivalLocation": { "latitude": 37.7359, "longitude": -122.5011 }, "timeWindows": [ { "startTime": "2023-01-13T07:30:00Z", "endTime": "2023-01-13T09:00:00Z" } ] } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "timeWindows": [ { "startTime": "2023-01-13T17:00:00Z", "endTime": "2023-01-13T18:30:00Z" } ] } ] } ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "costPerHour": 27, "startTimeWindows": [ { "startTime": "2023-01-13T07:00:00Z", "endTime": "2023-01-13T07:15:00Z" } ], "endTimeWindows": [ { "startTime": "2023-01-13T18:45:00Z", "endTime": "2023-01-13T19:00:00Z" } ] } ] } }
กรอบเวลาแบบยืดหยุ่น
คุณใช้กรอบเวลาเป็นข้อจำกัดแบบยืดหยุ่นได้โดยการกำหนด softStartTime และ softEndTime ในTimeWindow ประเภทข้อความ ซึ่งจะช่วยให้เครื่องมือเพิ่มประสิทธิภาพ
เบี่ยงเบนจากกรอบเวลาที่ระบุได้ตามต้นทุนที่ระบุ โดยให้ความสําคัญกับการเพิ่มประสิทธิภาพโดยรวม
มากกว่าการยึดมั่นในกรอบเวลาอย่างเคร่งครัดเมื่อเป็นประโยชน์
กรอบเวลาแบบยืดหยุ่นมีข้อจำกัดในการใช้งานดังนี้
- โดยจะใช้กับ globalStartTimeและglobalEndTimeไม่ได้เนื่องจากไม่ได้ใช้ข้อความประเภทTimeWindow
- โดยจะใช้ได้ก็ต่อเมื่อมี TimeWindowรายการเดียวในรายการ
พร็อพเพอร์ตี้
ตารางต่อไปนี้อธิบายพร็อพเพอร์ตี้ข้อจำกัดแบบยืดหยุ่นสำหรับกรอบเวลา
| ชื่อพร็อพเพอร์ตี้ | รูปแบบ | คำอธิบายพร็อพเพอร์ตี้ | 
|---|---|---|
| softStartTime | การประทับเวลา | ระบุจุดเริ่มต้นของกรอบเวลาแบบยืดหยุ่น หากเกิดเหตุการณ์ก่อนเวลานี้ จะมีค่าใช้จ่ายเกิดขึ้น | 
| softEndTime | การประทับเวลา | ระบุจุดสิ้นสุดของกรอบเวลาแบบยืดหยุ่น หากเกิดเหตุการณ์ขึ้นหลังจากเวลานี้ ระบบจะเรียกเก็บค่าใช้จ่าย | 
| costPerHourBeforeSoftStartTime | ตัวเลข | ค่าใช้จ่ายต่อชั่วโมงที่เกิดขึ้นเมื่อกิจกรรมเริ่มก่อน softStartTimeต้องระบุพร็อพเพอร์ตี้นี้เมื่อใช้softStartTimeดูแนวคิดหลักของรูปแบบต้นทุนเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้ต้นทุน | 
| costPerHourAfterSoftEndTime | ตัวเลข | ค่าใช้จ่ายต่อชั่วโมงที่เกิดขึ้นเมื่อกิจกรรมสิ้นสุดหลังจาก softEndTimeต้องระบุพร็อพเพอร์ตี้นี้เมื่อใช้softEndTimeดูแนวคิดหลักของรูปแบบต้นทุนเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้ต้นทุน | 
ตัวอย่างโค้ด
ตัวอย่างต่อไปนี้แสดงโครงสร้างของพร็อพเพอร์ตี้ข้อจํากัดแบบยืดหยุ่นของประเภทข้อความ TimeWindow
{ "softStartTime": "SOFT_START_TIME", "softEndTime": "SOFT_END_TIME", "costPerHourBeforeSoftStartTime": COST_BEFORE_START_TIME, "costPerHourAfterSoftEndTime": COST_AFTER_END_TIME }