กรอบเวลาจะระบุเวลาสำหรับเหตุการณ์ในเส้นทาง เหตุการณ์เหล่านี้อาจรวมถึง จุดเริ่มต้นและจุดสิ้นสุดของเส้นทางของคนขับ เวลาที่กำหนดสำหรับการรับและนำส่ง หรือ ระยะเวลาของเส้นทางทั้งหมด
กรอบเวลาช่วยสนับสนุนวัตถุประสงค์ต่างๆ ได้ เช่น
- จัดลำดับความสำคัญของการรับและนำส่งให้เสร็จสิ้นภายในกรอบเวลาที่ระบุ
- วางแผนเส้นทางเพื่อดำเนินการภายในเวลาทำการโดยรวม
- ตรวจสอบว่ายานพาหนะเริ่มและสิ้นสุดเส้นทางภายในกรอบเวลาที่ระบุ
โครงสร้าง
ดังที่แสดงในแผนภาพ กรอบเวลามีโครงสร้างดังนี้
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:00Z endTime :2023-01-13T07:15:00Z |
กำหนดกรอบเวลาที่ยอมรับได้สำหรับรถยนต์ในการเริ่ม (07:00 น. ถึง 07:15 น.) และสิ้นสุด (17:00 น. ถึง 17:15 น.) |
endTimeWindows |
startTime :2023-01-13T18:45:00Z endTime :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 }