คู่มือนี้แสดงการใช้งานแอตทริบิวต์การเปลี่ยนผ่านที่เป็นไปได้ โดยจะสอนวิธีจำลองสถานการณ์จริงจาก 2 ตัวอย่าง ได้แก่ การรวมเวลาจอดรถเข้ากับเส้นทางที่เพิ่มประสิทธิภาพ และการตรวจสอบว่าแต่ละเส้นทางสิ้นสุดด้วยการเข้าชมสถานที่ที่เฉพาะเจาะจง
ก่อนเริ่มต้น
คุณใช้แอตทริบิวต์การเปลี่ยนผ่านเพื่อเพิ่มค่าใช้จ่ายและความล่าช้าเฉพาะโมเดลให้กับการเปลี่ยนผ่านบางอย่างในเส้นทางที่เพิ่มประสิทธิภาพ ค่าใช้จ่ายและความล่าช้าเหล่านี้จะเพิ่มเข้าไปในระยะเวลาและค่าใช้จ่ายในการเปลี่ยนผ่านที่คำนวณจากข้อมูลแผนที่ตามพารามิเตอร์ของยานพาหนะที่ใช้
การเปลี่ยนผ่านคือส่วนของเส้นทางที่เชื่อมต่อสถานที่หนึ่งไปยังสถานที่ถัดไป
สถานที่หมายถึงจุดใดจุดหนึ่งต่อไปนี้ในเส้นทางของยานพาหนะ
- จุดเริ่มต้นของเส้นทาง
- จุดแวะพักที่มีการรับหรือนำส่งพัสดุ
- จุดสิ้นสุดของเส้นทาง
คุณกำหนดแอตทริบิวต์การเปลี่ยนทั้งหมดสำหรับโมเดลโดยเพิ่มแอตทริบิวต์เหล่านั้นลงในรายการ ShipmentModel.transition_attributes
แต่ละองค์ประกอบของรายการจะกำหนดแอตทริบิวต์การเปลี่ยนผ่าน 1 ชุด และจะจับคู่กับการเปลี่ยนผ่านในเส้นทางโดยใช้แท็กในตำแหน่งเริ่มต้นและตำแหน่งสิ้นสุดของการเปลี่ยนผ่าน ดูข้อมูลเพิ่มเติมเกี่ยวกับแอตทริบิวต์การเปลี่ยนผ่านได้ที่เอกสารอ้างอิงสำหรับ TransitionAttributes
จำลองสถานการณ์ในโลกแห่งความเป็นจริง
ส่วนนี้แสดงตัวอย่างเล็กๆ 2 ตัวอย่างเกี่ยวกับวิธีใช้ข้อจำกัดทางธุรกิจในชีวิตจริงโดยใช้แอตทริบิวต์การเปลี่ยนสถานะ
จองเวลาจอดรถ
ในสถานการณ์นี้ คนขับต้องจอดรถก่อนจึงจะไปที่สถานที่ A ได้ สถานที่ B อยู่ใกล้เคียง และคนขับสามารถใช้ที่จอดรถเดียวกันสำหรับการเข้าชมทั้ง 2 ครั้ง หากคนขับไปที่ B ทันทีหลังจากไปที่ A ก็จะประหยัดเวลาได้เนื่องจากไม่ต้องออกจากจุดจอดรถและจอดรถอีกครั้ง ใน Route Optimization API คุณสามารถใช้แอตทริบิวต์การเปลี่ยนเพื่อเพิ่มเวลาพิเศษในการจอดรถเฉพาะเมื่อคนขับย้ายจากที่จอดรถหนึ่งไปยังอีกที่หนึ่ง
เมื่อคุณจำลองเวลาจอดรถแยกจากระยะเวลาการเข้าชม คุณจะสร้างเส้นทางที่การเข้าชมซึ่งใช้ที่จอดรถเดียวกันได้รับการจัดกลุ่มให้ใช้เวลาน้อยลง คุณทำให้โมเดลมีความแม่นยำมากขึ้น และยังทำให้เครื่องมือเพิ่มประสิทธิภาพเลือกเส้นทางที่มีการจัดกลุ่มการเข้าชมด้วย
ทำตามขั้นตอนต่อไปนี้เพื่อดำเนินการในคำขอ Route Optimization API
ใช้
VisitRequest.durationเฉพาะในช่วงเวลาที่จำเป็นสำหรับการเข้าชมเท่านั้น เช่น เพื่อส่งมอบพัสดุและขอให้ลูกค้าเซ็นชื่อรับพัสดุสำหรับที่จอดรถแต่ละแห่งที่ใช้ในโมเดล ให้ใช้แท็กใหม่ที่ไม่ได้ใช้สำหรับสิ่งอื่นใดในโมเดล เช่น
PARKING_123เพิ่มแท็กนี้ลงในรายการต่อไปนี้
VisitRequest.tagsในคำขอเข้าชมทั้งหมดที่ใช้ที่จอดรถนี้Vehicle.start_tagsหากยานพาหนะเริ่มเส้นทางที่จุดจอดรถนี้Vehicle.end_tagsหากยานพาหนะเริ่มต้นหรือสิ้นสุดเส้นทางที่จุดจอดรถนี้
สำหรับแท็กการพักสายใหม่แต่ละแท็ก ให้เพิ่มรายการลงใน
ShipmentModel.transition_attributesที่เพิ่มความล่าช้าในการพักสายเมื่อมาจากจุดพักสายอื่นโดยทำดังนี้ตั้งค่า
TransitionAttributes.excluded_src_tagและTransitionAttributes.dst_tagเป็นPARKING_123ตั้งค่า
TransitionAttributes.delayเป็นเวลาที่ต้องใช้ในการจอดรถ
ตัวอย่างเช่น เมื่อแท็กของสถานที่คือ
PARKING_123และใช้เวลา 150 วินาทีในการจอดรถ ให้เพิ่มรายการต่อไปนี้ลงในShipmentModel.transition_attributes{ "excluded_src_tag": "PARKING_123", "dst_tag": "PARKING_123", "delay": "150s" }
การทำความสะอาดที่จำเป็นเมื่อสิ้นสุดเส้นทาง
ในสถานการณ์นี้ ยานพาหนะจะต้องได้รับการทำความสะอาดเมื่อสิ้นสุดเส้นทาง โดยมีข้อจำกัดเพิ่มเติมดังต่อไปนี้
- การทำความสะอาดจะดำเนินการที่ศูนย์ทำความสะอาดเฉพาะทางก่อนที่จะส่งกลับไปยังอู่รถ เส้นทางที่เพิ่มประสิทธิภาพจะใช้สถานที่ทำความสะอาดที่ดีที่สุดโดยอิงตามตำแหน่งของสถานที่นั้น รวมถึงตำแหน่งการรับและการนำส่งที่ยานพาหนะดำเนินการ
- หลังจากทำความสะอาดแล้ว ยานพาหนะต้องไม่รับหรือส่งสินค้าเพิ่มเติม
- เวลาที่ใช้ในการขับรถไปที่นั่นและทำความสะอาดยานพาหนะจะนับรวมเป็นชั่วโมงการทำงานของคนขับ และต้องไม่เกินระยะเวลาสูงสุดของเส้นทาง
คุณจำลองข้อกำหนดนี้โดยอนุญาตเฉพาะเส้นทางที่ว่างเปล่าหรือมีการเข้าชมครั้งล่าสุดเป็นสถานที่ทำความสะอาด ใน Route Optimization API คุณสามารถทำได้โดยห้ามไม่ให้เปลี่ยนไปยังจุดอ้างอิงสิ้นสุดของเส้นทางจากสถานที่ใดๆ ยกเว้นจากสถานที่ทำความสะอาดหรือจากจุดเริ่มต้นของเส้นทาง ดังนี้
- เลือกแท็กใหม่ 2 รายการที่ไม่ได้ใช้ที่ใดเลยในโมเดล เช่น
CLEANEDและROUTE_ENDโดยแบบแรกใช้สำหรับสถานที่ที่ยานพาหนะสะอาดหรือกลายเป็นสะอาด และแบบหลังใช้สำหรับจุดสิ้นสุดของเส้นทาง - สำหรับยานพาหนะแต่ละคัน ให้เพิ่มการจัดส่งแบบนำส่งเท่านั้นรายการใหม่ที่แสดงถึงการเดินทางไปยังสถานที่ทำความสะอาดพร้อมแอตทริบิวต์ต่อไปนี้
- สถานที่ตั้งของสถานที่ทำความสะอาดแต่ละแห่งควรแสดงเป็นคำขอเข้าชมการนำส่งของการจัดส่งนี้
- เพิ่ม
CLEANEDลงในVisitRequest.tagsของคำขอเข้าชมแต่ละรายการสำหรับการจัดส่งไปยังสถานที่ทำความสะอาด ซึ่งเป็นสัญญาณว่ายานพาหนะที่ออกจากสถานที่นี้สะอาด คำขอเข้าชมอื่นๆ ในโมเดลไม่ควรใช้แท็กนี้ เพื่อให้ระบบถือว่ายานพาหนะ "ไม่สะอาด" เมื่อออกจากคำขอเหล่านั้น - อนุญาตให้เครื่องมือเพิ่มประสิทธิภาพข้ามการจัดส่งนี้เมื่อยานพาหนะไม่ได้ใช้งานโดยตั้งค่า
penalty_costเป็นตัวเลขน้อยๆ
เพิ่ม
CLEANEDไปยังVehicle.start_tagsสำหรับยานพาหนะแต่ละคัน ซึ่งใช้เพื่อทำเครื่องหมายว่ายานพาหนะสะอาดก่อนที่จะรับหรือนำส่ง โดยสมมติว่ามีการทำความสะอาดเมื่อสิ้นสุดวันทำงานก่อนหน้า และอนุญาตให้ยานพาหนะเดินทางจากจุดอ้างอิงเริ่มต้นไปยังจุดอ้างอิงสิ้นสุดโดยตรง แม้ว่าเส้นทางดังกล่าวจะไม่เกิดขึ้นจริง แต่การอนุญาตสถานการณ์นี้จะช่วยให้เครื่องมือเพิ่มประสิทธิภาพค้นหาเส้นทางที่เพิ่มประสิทธิภาพได้อย่างมีประสิทธิภาพมากขึ้นเพิ่ม
ROUTE_ENDลงในVehicle.end_tagsสำหรับยานพาหนะแต่ละคันเพิ่มรายการใหม่ลงใน
ShipmentModel.transition_attributesที่ห้ามไม่ให้ยานพาหนะไปถึงจุดอ้างอิงปลายทางของยานพาหนะเมื่อไม่สะอาด โดยมีพร็อพเพอร์ตี้ต่อไปนี้ตั้งค่า
TransitionAttributes.excluded_src_tagเป็นCLEANEDตั้งค่า
TransitionAttributes.dst_tagเป็นROUTE_ENDตั้งค่า
TransitionAttributes.delayเป็นค่าที่สูง เมื่อคุณตั้งค่าความล่าช้าให้นานกว่าระยะเวลาเส้นทางสูงสุด คุณจะห้ามไม่ให้เครื่องมือเพิ่มประสิทธิภาพใช้การเปลี่ยนนี้ในเส้นทางได้อย่างมีประสิทธิภาพ
ตัวอย่างเช่น เมื่อสเกลเวลาของโมเดลคือ 1 วันทําการ คุณสามารถใช้การหน่วงเวลา 24 ชั่วโมง (86400 วินาที) เพื่อห้ามไม่ให้เปลี่ยนไปใช้จุดสิ้นสุดของเส้นทางจากที่ใดก็ได้ ยกเว้นสถานที่ทําความสะอาดและจุดเริ่มต้นของเส้นทาง ดังนี้
{ "excluded_src_tag": "CLEANED", "dst_tag": "ROUTE_END", "delay": "86400s" }
วิธีเลือกระหว่างความล่าช้าและค่าใช้จ่าย
การเลือกระหว่างความล่าช้าและค่าใช้จ่ายขึ้นอยู่กับลักษณะของตรรกะทางธุรกิจและข้อจำกัดที่ใช้ การตั้งค่า
TransitionAttributes.delay
เหมาะที่สุดสำหรับการใช้ข้อจำกัดที่เข้มงวดหรือเพื่อแสดงข้อดีข้อเสียในแง่ของเวลาที่ใช้
TransitionAttributes.cost
เหมาะกว่าเมื่อใช้ค่ากำหนดแบบยืดหยุ่นหรือข้อดีข้อเสียที่แสดงเป็นค่าใช้จ่ายเพิ่มเติม คุณสามารถรวมความล่าช้าและค่าใช้จ่ายตามที่ต้องการได้เมื่อคำนึงถึงทั้งเวลาที่ใช้และค่าใช้จ่าย
ตัวอย่างการทำความสะอาดยานพาหนะใช้การหน่วงเวลาที่นานมาก เนื่องจากต้องทำความสะอาดยานพาหนะเมื่อสิ้นสุดเส้นทาง และการหน่วงเวลาที่นานจะช่วยป้องกันไม่ให้เครื่องมือเพิ่มประสิทธิภาพละเลยข้อกำหนดนี้ หากคุณกำหนดเฉพาะต้นทุน เครื่องมือเพิ่มประสิทธิภาพอาจเลือกที่จะข้ามการทำความสะอาด หากพบวิธีชดเชยต้นทุนในส่วนอื่นๆ เช่น การจัดส่งสินค้ามากขึ้นในเวลาที่ "ประหยัด" ได้จากการไม่ทำความสะอาดยานพาหนะ
ตัวอย่างการจอดรถใช้ความล่าช้าสั้นๆ ซึ่งสอดคล้องกับเวลาเพิ่มเติมที่จำเป็นในการจอดรถ นอกจากนี้ คุณยังใช้ค่าใช้จ่ายร่วมกับความล่าช้าได้ด้วย หากคนขับหยุดที่ลานจอดรถแบบเสียค่าบริการ
วิธีเพิ่มแอตทริบิวต์การเปลี่ยนผ่านที่ตรงกับคำขอเข้าชมทั้งหมด
ตัวอย่างด้านบนใช้แอตทริบิวต์การเปลี่ยนภาพที่ตรงกับตำแหน่งที่มีแท็กที่ระบุ หรือตำแหน่งที่ไม่มีแท็ก แต่ถ้าคุณต้องการเพิ่มแอตทริบิวต์การเปลี่ยนที่ใช้กับการเปลี่ยนทั้งหมดล่ะ
คุณไม่สามารถละเว้นแท็กได้ เนื่องจากข้อความ TransitionAttributes แต่ละรายการต้องมี TransitionAttributes.src_tag และ TransitionAttributes.excluded_src_tag อย่างใดอย่างหนึ่ง และ TransitionAttributes.dst_tag และ TransitionAttributes.excluded_dst_tag อย่างใดอย่างหนึ่ง
อย่างไรก็ตาม คุณสามารถจับคู่แท็กทั้งหมดได้โดยตั้งค่า
TransitionAttributes.excluded_src_tag
หรือ
TransitionAttributes.excluded_dst_tag
เป็นแท็กที่ไม่ได้ใช้ที่ใดเลยในโมเดล ซึ่งจะจับคู่สถานที่ทั้งหมดที่ไม่มีแท็กนี้ แต่เนื่องจากคุณตั้งใจเลือกแท็กที่ไม่มีสถานที่ใดใช้ แอตทริบิวต์การเปลี่ยนสถานะเหล่านี้จึงจะจับคู่กับสถานที่ทั้งหมด