ตัวอย่างนี้แสดงวิธีใช้แอตทริบิวต์การเปลี่ยนเส้นทางเพื่อจัดลําดับความสําคัญของเส้นทางที่ยานพาหนะคันเดียวกันทำการรับและนำส่งสินค้าที่อยู่ใกล้เคียงในช่วงเวลาเดียวกัน ดูข้อมูลเพิ่มเติมเกี่ยวกับแอตทริบิวต์การเปลี่ยนผ่านได้ที่โมเดลตรรกะทางธุรกิจด้วยแอตทริบิวต์การเปลี่ยนผ่าน
ในตัวอย่างนี้
- การนำส่งของการจัดส่ง A, B และ C อยู่ใกล้กันบนถนนเดียวกัน
- เราจะเพิ่มการนําส่งในภายหลัง
- การนำส่งจะไม่มีเวลานำส่งที่ระบุ
- ไม่ว่าจะกำหนดเวลาการไปส่งอย่างไร ยานพาหนะจะต้องขับไปตามถนนนี้ 2 ครั้ง ได้แก่ 1 ครั้งในตอนเช้าจากอู่ และ 1 ครั้งในตอนเย็นขากลับ
- ระยะทางและระยะเวลาในการเดินทางโดยรวมของเส้นทางจะเท่าเดิมเสมอ ไม่ว่าจะดำเนินการ 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→อื่นๆ | 1,030 ม. | 100 เมตร | 5 | 930 ม. | 0.93 |
อื่นๆ→C | 1,000 ม. | 100 เมตร | 5 | 900 ม. | 0.9 |
C→depot | 1,080 ม. | 100 เมตร | 5 | 980 ม. | 0.98 |
รวม | 450 เมตร | 22.5 | 3,710 ม. | 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 | 2,080 ม. | 100 เมตร | 5 | 1,980 ม. | 1.98 |
รวม | 380 เมตร | 19 | 3,780 ม. | 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 | |
KM ต่ำกว่าเกณฑ์ | 0.45 | 0.38 | 0.45 | 0.38 |
ต้นทุนต่อ KM ต่ำกว่าเกณฑ์ | 40.00 | 40.00 | 50.00 | 50.00 |
กม. สูงกว่าเกณฑ์ | 3.71 | 3.78 | 3.71 | 3.78 |
ต้นทุนต่อ KM ที่สูงกว่าเกณฑ์ | 50.00 | 50.00 | 40.00 | 40.00 |
ค่าใช้จ่ายทั้งหมด | 185.95 | 189.38 | 26.21 | 22.78 |
สำหรับแต่ละเวอร์ชัน ระบบจะไฮไลต์ต้นทุนรวมที่ต่ำที่สุดของโซลูชัน 2 รายการเป็นตัวอักษรหนา คุณจะเห็นว่าเมื่อใช้ต้นทุนสูงเกินเกณฑ์ ต้นทุนรวมของเส้นทางที่กลุ่มการเข้าชมอยู่จะสูงขึ้น ซึ่งขัดแย้งกับสิ่งที่คุณต้องการ