บทที่ 11

สองคลัง กับจุดส่งที่อยู่ตรงกลาง

คลังบางนากับคลังรังสิตห่างกัน 35 กิโล จุดส่งแถวลาดพร้าวอยู่กลางทางพอดี และไม่มีใครรู้ว่าควรเป็นของคลังไหน

11 จุด สองคลัง และสามจุดที่อยู่ตรงกลาง

1เรื่องที่เกิดขึ้น

ตารางคลังสองแถว คลังบางนา และคลังรังสิต แต่ละแถวมีรถ 4 ล้อ 3 คัน
เพิ่มคลังได้เท่าที่มี แต่ละคลังมีรถของตัวเอง

สี่จุดอยู่แถวบางนาชัดเจน อีกสี่จุดอยู่แถวรังสิตชัดเจน เหลือสามจุดคือลาดพร้าว รัชโยธิน จตุจักร ที่อยู่ระหว่างสองคลัง

เวลากรอกข้อมูล คนกรอกต้องเลือกให้จุดสามจุดนี้ว่าเป็นของคลังไหน และไม่ว่าเลือกทางไหนก็เป็นการเดา

2เดาแล้วเป็นอย่างไร

ลองแบบที่คนกรอกส่วนใหญ่ทำ คือยกสามจุดนั้นให้บางนา เพราะบางนาเป็นคลังหลัก

บรรทัดสรุปผล: รถ 2 คัน · จุดส่ง 11 จุด · 133.0 กม. · 1,064 บาท · ตรงเวลาทุกคัน
133.0 กิโล 1,064 บาท
แผนที่กรุงเทพ เส้นสีฟ้าของรถจากคลังบางนาลากขึ้นเหนือไปถึงจตุจักร รัชโยธิน ลาดพร้าว แล้วกลับลงมา ส่วนเส้นสีแดงของรถจากคลังรังสิตวนอยู่แถวรังสิตด้านบน
เส้นสีฟ้าคือรถจากบางนา ลากขึ้นไปเกือบถึงดอนเมือง ทั้งที่คลังรังสิตอยู่เหนือกว่านั้นและรถของมันวนอยู่แค่แถวนั้น

ดูแผนที่แล้วเห็นทันทีว่าเปลือง แต่ในตารางข้อมูลมองไม่เห็นอะไรผิด ทุกจุดมีคลัง ทุกคลังมีรถ และโปรแกรมก็ทำตามที่บอกอย่างซื่อสัตย์

3บอกว่าออกคลังไหนก็ได้

  1. เปิด ⚙ รายละเอียด ของจุดนั้น แล้วดูแถว รถที่ส่งจุดนี้ได้ ติ๊กทั้งสองคลัง

    แถวรถที่ส่งจุดนี้ได้ มีช่องติ๊กสองช่อง คลังบางนา และคลังรังสิต ติ๊กไว้ทั้งคู่
    ติ๊กหลายคลังคือบอกว่าจุดนี้เราไม่เกี่ยง ใครสะดวกก็ไป ไม่ใช่บอกว่าต้องไปทั้งสองคลัง
  2. ทำกับทั้งสามจุดกลาง แล้วกด วางแผนเส้นทาง

บรรทัดสรุปผล: รถ 2 คัน · จุดส่ง 11 จุด · 120.7 กม. · 965 บาท · ตรงเวลาทุกคัน
120.7 กิโล 965 บาท · ลดลง 12.3 กิโล และ 99 บาท
แผนที่กรุงเทพ เส้นสีแดงของรถจากคลังบางนาวนอยู่แถวบางนาด้านล่าง เส้นสีฟ้าของรถจากคลังรังสิตลากลงมาเก็บจุดกลางที่จตุจักร ลาดพร้าว รัชโยธิน
คราวนี้รถบางนาอยู่แถวบางนา ส่วนรถรังสิตลงมาเก็บจุดกลางเอง เส้นสองเส้นไม่ทับกันแล้ว

ประหยัด 9% จากการไม่ตัดสินใจ แค่บอกโปรแกรมว่าสามจุดนั้นเราไม่เกี่ยง ไม่ได้เพิ่มรถ ไม่ได้ตัดจุด ไม่ได้เปลี่ยนอะไรในของที่ต้องส่ง

ถ้าอยากรู้เป็นจุด ๆ ว่าตกลงจุดไหนไปคลังไหน ไม่ต้องเดาจากสีเส้นบนแผนที่ ไปที่แท็บ เส้นทาง หัวการ์ดของรถแต่ละคันเขียนชื่อคลัง ต่อจากเลขคันไว้แล้ว เช่น คลังบางนา ชื่อคลังจะโผล่มาตรงนั้นเฉพาะเวลามีคลังมากกว่าหนึ่ง จุดที่เราติ๊กไว้สองคลังก็อยู่ในรายการของการ์ดใบใดใบหนึ่ง ใบที่มันอยู่คือคำตอบ

จุดที่ควรติ๊กหลายคลัง

ไม่ใช่ทุกจุด เอาแค่จุดที่ถ้าถามคนคุมรถแล้วเขาตอบว่า “คลังไหนก็ได้” จุดที่มีเหตุผลผูกกับคลังใดคลังหนึ่งอยู่แล้ว เช่นของอยู่ที่คลังนั้นเท่านั้น หรือคนขับสายนั้นรู้จักร้าน ควรปล่อยให้ผูกไว้

4ติ๊กทุกจุดทุกคลังไม่ใช่คำตอบ

ถ้าเปิดให้ทุกจุดออกได้ทุกคลัง ผลที่ได้ไม่ใช่แผนที่ดีที่สุด

บรรทัดสรุปผล: รถ 1 คัน · จุดส่ง 11 จุด · 142.6 กม. · 1,141 บาท · ตรงเวลาทุกคัน
รถคันเดียว แต่ 142.6 กิโล ไกลกว่าสองแผนก่อนหน้าทั้งคู่

รถคันเดียวจากรังสิตวิ่งลงมาเก็บทั้ง 11 จุดแล้วกลับ เป้าหมายที่ตั้งไว้คือ ใช้รถน้อยที่สุด และมันก็ทำได้จริง หนึ่งคันน้อยกว่าสองคัน แต่แลกกับการวิ่งเพิ่ม 21.9 กิโล และคนขับคนเดียวที่ต้องลากทั้งวัน

ในโปรแกรมมีช่องติ๊กชื่อ Free-for-all depots อยู่ในตั้งค่าขั้นสูง และเขียนกำกับไว้ว่าเป็นของสำหรับเดโม มีไว้โชว์ให้ลูกค้าเห็นว่าหลายคลังทำอะไรได้ ไม่ได้มีไว้ใช้จัดรถจริง เพราะมันทิ้งข้อมูลที่เราตั้งใจใส่ไว้ทั้งหมด

5สามแผนเรียงกัน

แผนกลางคือแผนที่ควรใช้ และมันคือแผนที่เราให้ข้อมูลถูกต้องที่สุด ไม่ใช่แผนที่เราปล่อยให้โปรแกรมคิดเองทั้งหมด โปรแกรมเลือกเก่งกว่าคนในเรื่องที่คนไม่รู้ ส่วนเรื่องที่คนรู้ ควรบอกมัน

ถ้าส่งข้อมูลเข้ามาเป็น JSONสำหรับคนที่ต่อระบบเอง

จุดที่ผูกกับคลังเดียวใช้ 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 บอกว่าออกจากคลังไหน อ่านตรงนั้นก็รู้ว่าโปรแกรมตัดสินใจอย่างไรกับจุดที่เราปล่อยให้เลือก

6ลองเอง

  1. เปิดแผนที่เดาให้บางนา แล้วกดที่การ์ดรถของบางนาเพื่อเน้นเส้นของมัน ตามเส้นด้วยตาจากคลังไปจุดที่ 3 จะเห็นระยะที่เสียไปเป็นรูป
  2. ยกสามจุดกลางให้รังสิตทั้งหมดแทน แล้ววางแผนใหม่ เทียบกับ 120.7 กิโล จะเห็นว่าการเดาไปทางไหนก็ยังแพงกว่าการปล่อยให้เลือก
  3. ติ๊กให้จุดแถวบางนาจุดหนึ่งออกได้สองคลัง แล้ววางแผนใหม่ แผนจะไม่เปลี่ยน เพราะรังสิตไม่มีเหตุผลจะลงมาถึงบางนา การติ๊กเพิ่มไม่ได้ทำให้แผนแย่ลง แค่ไม่ได้ช่วยอะไร