คู่มือนี้แสดงการใช้งานแอตทริบิวต์ทรานซิชันที่เป็นไปได้ โดยจะสอนวิธีจำลองสถานการณ์ในชีวิตจริงด้วย 2 ตัวอย่าง ได้แก่ การรวมเวลาในการจอดรถไว้ในเส้นทางที่เพิ่มประสิทธิภาพ และการตรวจสอบว่าแต่ละเส้นทางสิ้นสุดด้วยการไปที่สถานที่หนึ่งๆ
ก่อนเริ่มต้น
คุณใช้แอตทริบิวต์การเปลี่ยนเส้นทางเพื่อเพิ่มค่าใช้จ่ายและความล่าช้าเฉพาะรุ่นให้กับการเปลี่ยนเส้นทางบางรายการในเส้นทางที่เพิ่มประสิทธิภาพ ระบบจะเพิ่มค่าใช้จ่ายและความล่าช้าเหล่านี้นอกเหนือจากระยะเวลาการเปลี่ยนและค่าใช้จ่ายที่คำนวณจากข้อมูลแผนที่ตามพารามิเตอร์ของยานพาหนะที่ใช้งาน
การเปลี่ยนเส้นทางคือส่วนของเส้นทางที่เชื่อมต่อสถานที่หนึ่งๆ กับสถานที่ถัดไป
ตำแหน่งหมายถึงจุดใดจุดหนึ่งต่อไปนี้ในเส้นทางของยานพาหนะ
- จุดเริ่มต้นของเส้นทาง
- จุดจอดรับหรือส่งสินค้า
- จุดสิ้นสุดของเส้นทาง
คุณกำหนดแอตทริบิวต์การเปลี่ยนทั้งหมดสำหรับโมเดลได้โดยเพิ่มแอตทริบิวต์เหล่านั้นลงในรายการ ShipmentModel.transition_attributes
องค์ประกอบแต่ละรายการของลิสต์จะกำหนดแอตทริบิวต์การเปลี่ยนชุดหนึ่ง และระบบจะจับคู่กับการเปลี่ยนเส้นทางโดยใช้แท็กที่ตำแหน่งเริ่มต้นและตำแหน่งสิ้นสุดของการเปลี่ยน ดูข้อมูลเพิ่มเติมเกี่ยวกับแอตทริบิวต์การเปลี่ยนผ่านได้ที่เอกสารอ้างอิงสำหรับ TransitionAttributes
จำลองสถานการณ์ในชีวิตจริง
ส่วนนี้จะแสดงตัวอย่าง 2 ตัวอย่างสั้นๆ เกี่ยวกับวิธีใช้ข้อจํากัดทางธุรกิจในชีวิตจริงโดยใช้แอตทริบิวต์การเปลี่ยน
จองเวลาจอดรถ
ในกรณีนี้ คนขับต้องจอดรถก่อนจึงจะเข้าชมสถานที่ตั้ง A ได้ สถานที่ ข อยู่ใกล้เคียงกันและคนขับสามารถใช้จุดจอดรถเดียวกันได้สำหรับการเข้าชมทั้ง 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
รายการแรกมีไว้สำหรับตำแหน่งที่ยานพาหนะสะอาดหรือกำลังทำความสะอาดอยู่ ส่วนรายการที่ 2 มีไว้สำหรับจุดสิ้นสุดของเส้นทาง - สำหรับยานพาหนะแต่ละคัน ให้เพิ่มการจัดส่งแบบนำส่งอย่างเดียวใหม่ซึ่งแสดงถึงการเข้าชมสถานที่ทำความสะอาดโดยระบุแอตทริบิวต์ต่อไปนี้
- สถานที่ตั้งของสถานที่ทำความสะอาดแต่ละแห่งควรแสดงเป็นคำขอนำส่งของการจัดส่งนี้
- เพิ่ม
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
เป็นค่าขนาดใหญ่ เมื่อคุณตั้งค่าระยะเวลาก่อนที่จะเกิด Conversion ให้นานกว่าระยะเวลาสูงสุดของเส้นทาง จะเป็นการห้ามไม่ให้เครื่องมือเพิ่มประสิทธิภาพใช้การเปลี่ยนเส้นทางนี้ในเส้นทาง
ตัวอย่างเช่น เมื่อมาตราส่วนของรูปแบบคือ 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
เป็นแท็กที่ไม่ได้ใช้ในโมเดล ซึ่งจะจับคู่กับสถานที่ตั้งทั้งหมดที่ไม่มีแท็กนี้ แต่เนื่องจากคุณเลือกแท็กที่ไม่ได้ใช้โดยสถานที่ตั้งใดๆ ไว้อย่างจงใจ แอตทริบิวต์การเปลี่ยนเหล่านี้จึงจะจับคู่กับสถานที่ตั้งทั้งหมด