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