กรอบเวลาจะระบุเวลาสำหรับเหตุการณ์ในเส้นทาง เหตุการณ์เหล่านี้อาจรวมถึงจุดเริ่มต้นและจุดสิ้นสุดของเส้นทางของคนขับ เวลาที่กำหนดไว้สำหรับการรับและเวลานำส่ง หรือระยะเวลาของเส้นทางทั้งหมด
กรอบเวลาช่วยสนับสนุนวัตถุประสงค์ต่างๆ ได้ เช่น
- ให้ความสำคัญกับการรับและการนำส่งให้เสร็จสิ้นภายในกรอบเวลาที่กำหนด
- วางแผนเส้นทางเพื่อดำเนินการภายในเวลาทำการโดยรวม
- ตรวจสอบว่ายานพาหนะเริ่มต้นและสิ้นสุดเส้นทางภายในกรอบเวลาที่ระบุ
โครงสร้าง
ดังที่แสดงในแผนภาพ กรอบเวลาจะมีโครงสร้างดังนี้
globalStartTimeและglobalEndTimeเป็นพร็อพเพอร์ตี้ของShipmentModeltimeWindowsเป็นพร็อพเพอร์ตี้ของpickupsภายในShipmentdeliveriesภายในShipment
startTimeWindowsและendTimeWindowsเป็นพร็อพเพอร์ตี้ของVehicle
รายการตรวจสอบ Essentials
รายการตรวจสอบต่อไปนี้อธิบายความรู้ที่จำเป็นซึ่งจะช่วยป้องกันข้อผิดพลาดที่อาจเกิดขึ้นเกี่ยวกับกรอบเวลา รายการนี้จะช่วยคุณตรวจสอบคำขอและแก้ปัญหาการตอบกลับ
พร็อพเพอร์ตี้
ตารางต่อไปนี้อธิบายพร็อพเพอร์ตี้กรอบเวลาส่วนกลาง
| พร็อพเพอร์ตี้ | รูปแบบ | คำอธิบาย |
|---|---|---|
globalStartTime |
Timestamp |
เวลาที่เร็วที่สุดสำหรับกิจกรรมใดๆ |
globalEndTime |
Timestamp |
เวลาล่าสุดสำหรับกิจกรรมใดๆ |
ตารางต่อไปนี้อธิบายพร็อพเพอร์ตี้กรอบเวลาในการจัดส่งและยานพาหนะ
| ผู้ปกครอง | พร็อพเพอร์ตี้ | รูปแบบ | คำอธิบาย |
|---|---|---|---|
Shipmentpickups |
timeWindows |
อาร์เรย์ของประเภทข้อความ TimeWindow |
ระบุช่วงเวลาสำหรับการรับพัสดุเพื่อจัดส่ง |
Shipmentdeliveries |
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 }