บทที่ 11
คลังบางนากับคลังรังสิตห่างกัน 35 กิโล จุดส่งแถวลาดพร้าวอยู่กลางทางพอดี และไม่มีใครรู้ว่าควรเป็นของคลังไหน
11 จุด สองคลัง และสามจุดที่อยู่ตรงกลาง
สี่จุดอยู่แถวบางนาชัดเจน อีกสี่จุดอยู่แถวรังสิตชัดเจน เหลือสามจุดคือลาดพร้าว รัชโยธิน จตุจักร ที่อยู่ระหว่างสองคลัง
เวลากรอกข้อมูล คนกรอกต้องเลือกให้จุดสามจุดนี้ว่าเป็นของคลังไหน และไม่ว่าเลือกทางไหนก็เป็นการเดา
ลองแบบที่คนกรอกส่วนใหญ่ทำ คือยกสามจุดนั้นให้บางนา เพราะบางนาเป็นคลังหลัก
ดูแผนที่แล้วเห็นทันทีว่าเปลือง แต่ในตารางข้อมูลมองไม่เห็นอะไรผิด ทุกจุดมีคลัง ทุกคลังมีรถ และโปรแกรมก็ทำตามที่บอกอย่างซื่อสัตย์
เปิด ⚙ รายละเอียด ของจุดนั้น แล้วดูแถว รถที่ส่งจุดนี้ได้ ติ๊กทั้งสองคลัง
ทำกับทั้งสามจุดกลาง แล้วกด วางแผนเส้นทาง
ประหยัด 9% จากการไม่ตัดสินใจ แค่บอกโปรแกรมว่าสามจุดนั้นเราไม่เกี่ยง ไม่ได้เพิ่มรถ ไม่ได้ตัดจุด ไม่ได้เปลี่ยนอะไรในของที่ต้องส่ง
ถ้าอยากรู้เป็นจุด ๆ ว่าตกลงจุดไหนไปคลังไหน ไม่ต้องเดาจากสีเส้นบนแผนที่ ไปที่แท็บ เส้นทาง หัวการ์ดของรถแต่ละคันเขียนชื่อคลัง ต่อจากเลขคันไว้แล้ว เช่น คลังบางนา ชื่อคลังจะโผล่มาตรงนั้นเฉพาะเวลามีคลังมากกว่าหนึ่ง จุดที่เราติ๊กไว้สองคลังก็อยู่ในรายการของการ์ดใบใดใบหนึ่ง ใบที่มันอยู่คือคำตอบ
จุดที่ควรติ๊กหลายคลัง
ไม่ใช่ทุกจุด เอาแค่จุดที่ถ้าถามคนคุมรถแล้วเขาตอบว่า “คลังไหนก็ได้” จุดที่มีเหตุผลผูกกับคลังใดคลังหนึ่งอยู่แล้ว เช่นของอยู่ที่คลังนั้นเท่านั้น หรือคนขับสายนั้นรู้จักร้าน ควรปล่อยให้ผูกไว้
ถ้าเปิดให้ทุกจุดออกได้ทุกคลัง ผลที่ได้ไม่ใช่แผนที่ดีที่สุด
รถคันเดียวจากรังสิตวิ่งลงมาเก็บทั้ง 11 จุดแล้วกลับ เป้าหมายที่ตั้งไว้คือ ใช้รถน้อยที่สุด และมันก็ทำได้จริง หนึ่งคันน้อยกว่าสองคัน แต่แลกกับการวิ่งเพิ่ม 21.9 กิโล และคนขับคนเดียวที่ต้องลากทั้งวัน
ในโปรแกรมมีช่องติ๊กชื่อ Free-for-all depots อยู่ในตั้งค่าขั้นสูง และเขียนกำกับไว้ว่าเป็นของสำหรับเดโม มีไว้โชว์ให้ลูกค้าเห็นว่าหลายคลังทำอะไรได้ ไม่ได้มีไว้ใช้จัดรถจริง เพราะมันทิ้งข้อมูลที่เราตั้งใจใส่ไว้ทั้งหมด
แผนกลางคือแผนที่ควรใช้ และมันคือแผนที่เราให้ข้อมูลถูกต้องที่สุด ไม่ใช่แผนที่เราปล่อยให้โปรแกรมคิดเองทั้งหมด โปรแกรมเลือกเก่งกว่าคนในเรื่องที่คนไม่รู้ ส่วนเรื่องที่คนรู้ ควรบอกมัน
จุดที่ผูกกับคลังเดียวใช้ depot_id เหมือนเดิม:
{
"order_id": "S-01",
"location": { "lat": 13.6795, "lng": 100.6095 },
"weight_kg": 80,
"volume_cm3": 160000,
"depot_id": "บางนา"
}
จุดที่ออกคลังไหนก็ได้ ใช้ candidate_depot_ids แทน:
{
"order_id": "M-01",
"location": { "lat": 13.8195, "lng": 100.5595 },
"weight_kg": 80,
"volume_cm3": 160000,
"candidate_depot_ids": ["บางนา", "รังสิต"]
}
ใส่ได้กี่คลังก็ได้ ไม่ต้องสองคลัง
คลังที่ชื่อไม่ตรงกับ depot_id ของคลังไหนเลย
คือคลังที่ไม่มีอยู่ และจุดนั้นจะไม่มีรถไปส่ง
ถ้าต้องละเอียดถึงระดับชนิดรถ ไม่ใช่แค่ระดับคลัง ใช้
candidate_van_types เป็นเรื่องของบทที่ 13
ฟิลด์นั้นถ้ามีค่า จะเป็นตัวตัดสิน และสองฟิลด์ข้างบนกลายเป็นแค่ป้ายชื่อ
ในคำตอบ แต่ละเส้นทางมี depot_id บอกว่าออกจากคลังไหน
อ่านตรงนั้นก็รู้ว่าโปรแกรมตัดสินใจอย่างไรกับจุดที่เราปล่อยให้เลือก