ตัวอย่างนี้แสดงวิธีใช้แอตทริบิวต์การเปลี่ยนผ่านเพื่อจัดลําดับความสําคัญของเส้นทางที่ ยานพาหนะคันเดียวกันจะรับและนําส่งที่อยู่ใกล้เคียงในบล็อกเวลาเดียว กัน ดูข้อมูลเพิ่มเติมเกี่ยวกับแอตทริบิวต์การเปลี่ยนผ่านได้ที่สร้างตรรกะทางธุรกิจด้วยแอตทริบิวต์การเปลี่ยนผ่าน
ในตัวอย่างนี้
- การนำส่งการจัดส่ง A, B และ C อยู่ใกล้กันบนถนนสายเดียวกัน
- การนำส่งเพิ่มเติมจะเกิดขึ้นในอนาคต
- การนำส่งไม่มีเวลานำส่งที่ระบุ
- ไม่ว่ากำหนดเวลาการเข้าชมจะเป็นอย่างไร ยานพาหนะต้องขับรถบนถนนนี้ 2 ครั้ง ได้แก่ ครั้งหนึ่งในตอนเช้าขณะเดินทางจากคลัง และอีกครั้งในตอนเย็นขณะเดินทางกลับ
- ระยะทางและระยะเวลาในการเดินทางโดยรวมของเส้นทางจะเหมือนกันเสมอ ไม่ว่าคุณจะดำเนินการ A, B และ C เมื่อใดก็ตาม
ในกรณีนี้ และสำหรับคำขอที่ใช้เฉพาะต้นทุนต่อชั่วโมงและต้นทุนต่อกิโลเมตร เส้นทางที่เพิ่มประสิทธิภาพอาจมี A และ B ในช่วงเช้า และ C ในช่วงเย็น และต้นทุนของโซลูชันจะเท่ากับกรณีที่จัดการทั้ง 3 รายการพร้อมกัน
ต้นทุนต่อกิโลเมตรที่มีเกณฑ์
หากต้องการจัดกลุ่มการเข้าชมที่อยู่ใกล้กัน คุณต้องเลือกเกณฑ์ระยะทางก่อน นี่คือ ระยะทางสูงสุดระหว่างการเข้าชม 2 ครั้งที่คุณถือว่าอยู่ใกล้กัน ตัวอย่างนี้ใช้เกณฑ์ 100 เมตร ซึ่งสอดคล้องกับ 1 ช่วงตึกในเขตเมืองโดยประมาณ คุณสามารถเพิ่มหรือลดเกณฑ์ให้ตรงกับความต้องการของธุรกิจ และความต้องการของคนขับได้
หากต้องการจัดกลุ่มการเข้าชมที่อยู่ใกล้กันภายใน 100 เมตร คุณจะต้องตั้งต้นทุนสูงสำหรับ 100 เมตรแรกของการเปลี่ยนเส้นทางแต่ละครั้ง และตั้งต้นทุนต่ำกว่าสำหรับ เมตรที่เหลือของการเปลี่ยนเส้นทาง เนื่องจาก 100 เมตรแรกมีค่าใช้จ่ายสูงที่สุด ตัวเพิ่มประสิทธิภาพจึงประหยัดค่าใช้จ่ายได้มากที่สุดด้วยการใช้การเปลี่ยนเส้นทางที่สั้นกว่าเกณฑ์ 100 เมตร แม้ว่าการเปลี่ยนเส้นทางดังกล่าวจะทำให้เส้นทางโดยรวมยาวขึ้นก็ตาม
หากต้องการตั้งค่าใช้จ่าย ให้เพิ่มรายการใหม่ใน
ShipmentModel.transition_attributes
โดยมีพร็อพเพอร์ตี้ต่อไปนี้
- หากต้องการจับคู่การเปลี่ยนสถานะที่เป็นไปได้ทั้งหมด ให้เลือกแท็กที่ไม่ได้ใช้ที่ใดเลยใน
โมเดล เช่น
UNUSED_TAG
ตั้งค่าTransitionAttributes.excluded_src_tag
และTransitionAttributes.excluded_dst_tag
ให้กับแท็กนี้ - ตั้งค่า
TransitionAttributes.distance_limit
โดยใช้ระยะทางและต้นทุนขั้นต่ำ ดังนี้- ตั้งค่า
DistanceLimit.soft_max_meters
เป็นเกณฑ์ที่เลือก - ตั้งค่า
DistanceLimit.cost_per_kilometer_below_soft_max
เป็นต้นทุนต่อกิโลเมตรที่ต่ำกว่าเกณฑ์ - ตั้งค่า
DistanceLimit.cost_per_kilometer_above_soft_max
เป็นต้นทุนต่อกิโลเมตรที่สูงกว่าเกณฑ์
- ตั้งค่า
{
"model": {
"transitionAttributes": [
{
"excluded_dst_tag": "UNUSED_TAG",
"excluded_src_tag": "UNUSED_TAG",
"distanceLimit": {
"softMaxMeters": 100,
"costPerKilometerBelowSoftMax": 50,
"costPerKilometerAboveSoftMax": 1,
}
}
]
}
}
การจัดส่งหรือยานพาหนะใดๆ ต้องไม่ใช้แท็ก #unused_tag#
เพื่อให้ตรงกับ
การเปลี่ยนสถานะที่เป็นไปได้ทั้งหมด ดูข้อมูลเพิ่มเติมได้ที่วิธีจับคู่คำขอเข้าชมทั้งหมด
วิธีการทำงานของต้นทุนสูงที่ต่ำกว่าเกณฑ์
ส่วนนี้แสดงให้เห็นว่าต้นทุนที่ต่ำกว่าและสูงกว่าเกณฑ์ส่งผลต่อต้นทุนโดยรวมของโซลูชันต่างๆ ในสถานการณ์ตัวอย่างอย่างไร
วิธีที่ 1: ทำ A, B ในขาไป และ C ในขากลับ
ในโซลูชันนี้ ระบบจะแบ่งการจัดส่งออกเป็น 2 เส้นทางของถนนสายนี้ โดยจะส่ง 2 รายการในการข้ามครั้งแรก และส่งรายการที่เหลือ ในการข้ามครั้งที่ 2 การเปลี่ยนมี 5 แบบดังนี้
ทรานซิชัน | ระยะทาง | ต่ำกว่าเกณฑ์ | สูงกว่าเกณฑ์ | ||
---|---|---|---|---|---|
ระยะทาง | ค่าใช้จ่าย | ระยะทาง | ค่าใช้จ่าย | ||
depot →A | 1,000 ม. | 100 ม. | 5 | 900 ม. | 0.9 |
A→B | 50 ม. | 50 ม. | 2.5 | 0 นาที | 0 |
B→other | 1030 ม. | 100 ม. | 5 | 930 ม. | 0.93 |
อื่นๆ→C | 1,000 ม. | 100 ม. | 5 | 900 ม. | 0.9 |
C→depot | 1080 ม. | 100 ม. | 5 | 980 ม. | 0.98 |
รวม | 450 ม. | 22.5 | 3710 ม. | 3.71 |
ระบบจะคำนวณต้นทุนโดยรวมจากผลรวมของต้นทุน 2 รายการต่อกิโลเมตร ดังนี้
- ต้นทุนต่อกิโลเมตรต่ำกว่าเกณฑ์ (50) คูณด้วยระยะทางรวมที่เดินทาง ต่ำกว่าเกณฑ์ (450 ม. = 0.45 กม.)
- ต้นทุนต่อกิโลเมตรที่สูงกว่าเกณฑ์ (1) คูณด้วยระยะทางรวมที่เดินทาง สูงกว่าเกณฑ์ (3710 ม. = 3.71 กม.)
ดังนั้น ค่าใช้จ่ายโดยรวมจึงเท่ากับ 0.45 * 50 + 3.71 * 1 = 22.5 + 3.71 = 26.21
วิธีที่ 2: ทำ A, B, C ในขาไป ไม่ต้องทำอะไรในขากลับ
ในโซลูชันนี้ การจัดส่งทั้ง 3 รายการจะจัดส่ง "เป็นกลุ่ม" ในระหว่างการเดินทางบนถนน 1 ครั้ง ซึ่งแตกต่างจากโซลูชันที่ 1 ในการข้ามอีกครั้ง รถ จะไม่หยุดเลย อีกครั้งที่การเปลี่ยนฉากมี 5 แบบ แต่ความยาวและ องค์ประกอบจะแตกต่างกัน
ทรานซิชัน | ระยะทาง | ต่ำกว่าเกณฑ์ | สูงกว่าเกณฑ์ | ||
---|---|---|---|---|---|
ระยะทาง | ค่าใช้จ่าย | ระยะทาง | ค่าใช้จ่าย | ||
depot →A | 1,000 ม. | 100 ม. | 5 | 900 ม. | 0.9 |
A→B | 50 ม. | 50 ม. | 2.5 | 0 นาที | 0 |
B→C | 30 ม. | 30 ม. | 1.5 | 0 นาที | 0 |
C→อื่นๆ | 1,000 ม. | 100 ม. | 5 | 900 ม. | 0.9 |
other→depot | 2080 ม. | 100 ม. | 5 | 1980 ม. | 1.98 |
รวม | 380 ม. | 19 | 3780 ม. | 3.78 |
การใช้การคำนวณแบบเดียวกับในโซลูชันที่ 1 ต้นทุนโดยรวมคือ 0.38 * 50 +
3.78 * 1 = 19 + 3.78 = 22.78 และการดำเนินการเข้าชมทั้งหมดในบล็อกเวลาเดียวมี
ต้นทุนต่ำกว่าการดำเนินการใน 2 กลุ่ม คุณสามารถเพิ่มความเข้มของเอฟเฟกต์นี้ได้โดย
เพิ่ม
DistanceLimit.cost_per_kilometer_below_soft_max
เหตุผลที่ต้นทุนต่อกิโลเมตรต่ำกว่าเกณฑ์ไม่ได้ผล
เนื่องจากคุณต้องการให้การเปลี่ยนเส้นทางระยะสั้นมีความสำคัญมากกว่าการเปลี่ยนเส้นทางระยะยาว คุณจึงอาจ ต้องการกำหนดต้นทุนต่อกิโลเมตรสูงสำหรับการเปลี่ยนเส้นทางระยะยาว และคงต้นทุนต่อกิโลเมตรต่ำ สำหรับการเปลี่ยนเส้นทางระยะสั้น แต่ในความเป็นจริงแล้ว การทำเช่นนี้กลับส่งผลในทางตรงกันข้าม เนื่องจากช่วง 100 เมตรแรกของการเปลี่ยนเส้นทางมีราคาถูกที่สุด ตัวเพิ่มประสิทธิภาพจึงใช้ช่วงเมตรที่ "ถูก" เหล่านี้ให้เกิดประโยชน์สูงสุดด้วยการเลือกการเปลี่ยนเส้นทางที่มีระยะทางใกล้เคียงหรือมากกว่า 100 เมตร
คุณจะเห็นผลลัพธ์นี้ในโซลูชันตัวอย่าง 2 รายการ หากคุณสลับต้นทุนต่อกิโลเมตรต่ำกว่าและสูงกว่าเกณฑ์ ต้นทุนเส้นทางจะเปลี่ยนแปลงดังนี้
ค่าใช้จ่ายสูงกว่าเกณฑ์ | ต้นทุนสูงต่ำกว่าเกณฑ์ | |||
---|---|---|---|---|
วิธีที่ 1 | วิธีที่ 2 | วิธีที่ 1 | วิธีที่ 2 | |
กม. ต่ำกว่าเกณฑ์ | 0.45 | 0.38 | 0.45 | 0.38 |
ต้นทุนต่อกม.ต่ำกว่าเกณฑ์ | 1.00 | 1.00 | 50.00 | 50.00 |
KM สูงกว่าเกณฑ์ | 3.71 | 3.78 | 3.71 | 3.78 |
ค่าใช้จ่ายต่อกม.ที่เกินเกณฑ์ | 50.00 | 50.00 | 1.00 | 1.00 |
ค่าใช้จ่ายทั้งหมด | 185.95 | 189.38 | 26.21 | 22.78 |
สำหรับแต่ละเวอร์ชัน ระบบจะไฮไลต์ต้นทุนรวมที่ต่ำกว่าของทั้ง 2 โซลูชันเป็นตัวหนา คุณจะเห็นว่าเมื่อใช้ต้นทุนสูงกว่าเกณฑ์ ต้นทุนรวมของเส้นทางจะสูงขึ้นสำหรับเส้นทางที่มีการเข้าชม ซึ่งจัดกลุ่มไว้ ซึ่งตรงกันข้ามกับสิ่งที่คุณต้องการ