บทที่ 5
แผนบทที่ 1 ใช้รถคันเดียวได้เพราะรถคันนั้นรับได้ 1,500 กิโล บทนี้คือวันเดียวกัน แต่รถที่มีจริงเล็กกว่านั้น
วันจันทร์เดิม 12 จุด แต่รถรับได้คันละ 500 กิโล
ของวันจันทร์รวมกัน 990 กิโล 1,980 ลิตร ถ้ารถรับได้ 1,500 กิโล ก็จบในคันเดียวอย่างที่บทที่ 1 ทำ แต่รถสี่ล้อที่วิ่งอยู่จริงหลายเจ้ารับได้ 500 กิโล และ 990 ไม่มีทางลงใน 500 ไม่ว่าจะเรียงจุดเก่งแค่ไหน
นี่ไม่ใช่ปัญหาเส้นทาง เป็นปัญหาว่าของขึ้นรถได้เท่าไหร่ และเป็นตัวเลขที่คนคุมรถรู้ดีอยู่แล้ว แค่ยังไม่ได้บอกโปรแกรม
เปิด ⚙ รายละเอียด ของคลัง ข้างในมีแถบขึ้นต้นด้วย 🚐 บอกชนิดรถกับจำนวนคัน กดเข้าไป แต่ละชนิดรถมีสองช่องคู่กัน
ดู เที่ยวสูงสุดต่อคัน ให้เป็น 1 ตัวอย่างนี้ตั้งไว้ที่ 1 คือรถออกจากคลังรอบเดียวแล้วจบวัน
กด วางแผนเส้นทาง
3.5 กิโลที่เพิ่มมาคือค่าที่รถสองคันต้องออกจากคลังเดียวกันไปคนละทาง แล้ววิ่งกลับมาที่เดิมทั้งคู่ ไม่ใช่ค่าที่โปรแกรมจัดแย่ลง
ที่ควรเปิดดูคือการ์ดของรถแต่ละคัน บรรทัด ใช้ความจุไป บอกว่าอะไรเป็นตัวที่เต็ม
ดูบรรทัด “ใช้เวลาทำงานไป” ด้วย
รถสองคันนี้กลับถึงคลังสิบโมงกว่า ใช้เวลาไปคันละหนึ่งในสี่ของกะ แปลว่าที่ต้องเพิ่มรถไม่ใช่เพราะวันมันยาว แต่เพราะของไม่พอลงคันเดียว ถ้าเจอตัวเลขแบบนี้ คำถามถัดไปคือรถกลับมาโหลดของรอบสองได้ไหม อยู่ในบทที่ 6
ของอย่างขนมปัง กระดาษชำระ หรือกล่องโฟม เบาแต่กินที่ วันแบบนั้นรถเต็มทั้งที่ตาชั่งยังไม่ขึ้น ลองวันเดิมกับรถที่รับได้ 1,500 กิโล เท่าบทที่ 1 แต่มีที่ว่างแค่ 700 ลิตร
สองบรรทัดนี้คือเหตุผลที่ต้องใส่ทั้งสองช่อง ถ้าใส่แต่น้ำหนักแล้วปล่อยลิตรไว้สูง ๆ โปรแกรมจะเชื่อว่ารถใส่ได้ไม่จำกัด แล้วคืนแผนที่ของขึ้นไม่หมดตอนโหลดจริง
ที่ผ่านมาโปรแกรมหยิบรถคันที่สองมาใช้ได้ เพราะในคลังตั้งไว้สามคัน ถ้ามีรถคันเดียวและของเกินที่คันเดียวรับไหว โปรแกรมจะไม่ยัดของขึ้นรถให้
สี่จุดที่ค้างคือมินิมาร์ทอุดมสุข ตลาดสำโรง ฟู้ดคอร์ทซีคอน และโรงแรมบางนา กม.6 รวมกัน 510 กิโล และเป็นสี่จุดที่หนักที่สุดของวัน โปรแกรมเลือกทิ้งจุดหนักเพราะทิ้งจุดหนักสี่จุดยังส่งได้แปดจุด ถ้าไปทิ้งจุดเบาจะต้องทิ้งมากกว่านั้นถึงจะเหลือที่ให้ของหนัก
แผนที่บอกว่าทำไม่ได้ ดีกว่าแผนที่ดูสวย
โปรแกรมจะไม่ปัดเศษความจุให้ ไม่มี “เกินนิดเดียวน่าจะไหว” เพราะเกินนิดเดียวที่หน้าคลังแปลว่าของลงมากองไว้ แล้วต้องหารถรอบสองอยู่ดี ตัวเลขที่ใส่ควรเป็นที่รถรับไหวจริง ไม่ใช่ที่เขียนไว้ข้างรถ
ความจุอยู่บนชนิดรถ ไม่ได้อยู่บนคลัง ปริมาตรเป็น cm³ ไม่ใช่ลิตร:
{
"type_name": "4 ล้อ",
"van_count": 3,
"shift_start": "08:00",
"shift_end": "17:00",
"capacity_kg": 500,
"capacity_cm3": 8000000,
"max_trip": 1
}
ช่อง จำกัด ลิตร ในหน้าจอคือ capacity_cm3 หารพัน
8,000,000 cm³ คือ 8,000 ลิตร ส่วนของแต่ละจุดใช้
weight_kg กับ volume_cm3 หน่วยเดียวกัน
ทั้งสองช่องต้องมากกว่าศูนย์ รถที่รับอะไรไม่ได้เลยไม่ใช่โจทย์ที่แก้ได้ ส่ง 0 มาจะถูกปฏิเสธตั้งแต่ต้นทาง ไม่ใช่กลายเป็นแผนที่ทุกจุดจัดไม่ได้
จุดที่ไม่มีรถรับไหวจะกลับมาใน unassigned_job_ids
พร้อมเหตุผลใน unassigned_reasons ไม่ได้หายไปเฉย ๆ