บทที่ 8

ถูกที่สุด หรือรถน้อยที่สุด

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

วันจันทร์เดิม แต่ในคลังมีรถหกล้อหนึ่งคัน กับรถสี่ล้อสามคัน

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

คลังบางนามีรถหกล้อหนึ่งคัน รับได้ 1,500 กิโล ของทั้งวัน 990 กิโลขึ้นคันเดียวได้สบาย และมีรถสี่ล้อสามคัน รับได้คันละ 500

รถหกล้อกินน้ำมันมากกว่า ค่าวิ่งของมันคือ 14 บาทต่อกิโล ส่วนสี่ล้ออยู่ที่ 6 บาท ตัวเลขนี้เปลี่ยนคำตอบทั้งหมด

2สามเป้าหมาย

ช่องเป้าหมายการจัดเส้นทาง เลือกไว้ที่ ต้นทุนต่ำที่สุด (บาท) มีวงสีแดงรอบ
อยู่บนสุดของ ตัวเลือกการวางแผนเส้นทาง

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

ค่าวิ่งของรถแต่ละชนิดอยู่ใน ⚙ รายละเอียด ของคลัง

กล่องต้นทุนต่อคัน มีช่องค่าเช่า/คัน (บาท) ว่างอยู่แสดงคำว่าค่ากลาง และช่องต้นทุน/กม. (บาท) ใส่ 14 มีวงสีแดงรอบ
ปล่อยว่างไว้คือใช้ค่ากลางของแผน ใส่เฉพาะชนิดรถที่ต่างจากค่ากลางจริง

3ใช้รถน้อยที่สุด

บรรทัดสรุปผล: รถ 1 คัน · จุดส่ง 12 จุด · 50.0 กม. · 700 บาท · ตรงเวลาทุกคัน
รถคันเดียว 50.0 กิโล 700 บาท
การ์ดรถคันที่ 1 ป้ายชนิดรถ 6 ล้อ ระยะ 50.0 กม. 265 นาที บรรทุก 990.0 กก. กลับถึงคลัง 12:25 ใช้เวลาทำงานไป 49 เปอร์เซ็นต์ ใช้ความจุไป น้ำหนัก 66 เปอร์เซ็นต์ ปริมาตร 18 เปอร์เซ็นต์ จุดส่ง 12 จุด
หกล้อ ขนของทั้งวัน 990 กิโลในรอบเดียว 50.0 กิโล เป็นเส้นที่สั้นที่สุดที่วันนี้ทำได้ และเป็นแผนที่เรียบร้อยที่สุด

เลือก ระยะทางสั้นที่สุด ในวันเดียวกันได้คำตอบเดิม 50.0 กิโล 700 บาท เพราะเส้นที่สั้นที่สุดก็คือรถคันเดียววิ่งรอบเดียวอยู่แล้ว

บรรทัดสรุปผล: รถ 1 คัน · จุดส่ง 12 จุด · 50.0 กม. · 700 บาท · ตรงเวลาทุกคัน
ระยะทางสั้นที่สุด ให้แผนเดียวกับใช้รถน้อยที่สุด ในวันนี้

4ต้นทุนต่ำที่สุด

บรรทัดสรุปผล: รถ 2 คัน · จุดส่ง 12 จุด · 53.5 กม. · 321 บาท · ตรงเวลาทุกคัน
รถสองคัน 53.5 กิโล 321 บาท
การ์ดรถคันที่ 2 ป้ายชนิดรถ 4 ล้อ ระยะ 27.4 กม. 142 นาที บรรทุก 495.0 กก. กลับถึงคลัง 10:21 ใช้เวลาทำงานไป 26 เปอร์เซ็นต์ จุดส่ง 6 จุด
ป้ายข้างชื่อรถบอกว่าเป็น 4 ล้อ โปรแกรมไม่แตะรถหกล้อเลย ทั้งที่มันขนได้ทั้งวันในรอบเดียว

เทียบสองแผน รถสองคันวิ่งไกลกว่า 3.5 กิโล แต่จ่ายน้อยกว่า 379 บาท คิดเป็น 54% ของราคาเดิม

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

ทำไมไม่ตั้งต้นด้วยต้นทุนต่ำที่สุดไปเลย

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

5ค่าเช่ารถ กับรถที่เรามีอยู่แล้ว

ต้นทุนมีสองก้อน ค่าวิ่งต่อกิโล กับค่าเรียกใช้รถต่อคัน ก้อนที่สองมีไว้สำหรับรถที่ต้องจ่ายเพิ่มจริงเมื่อเรียกใช้ คือรถเช่าหรือรถซับ

รถที่บริษัทมีอยู่แล้วไม่ควรมีค่าเรียกใช้ เพราะจ่ายไปแล้วไม่ว่าจะออกวิ่งหรือไม่ ถ้าใส่ค่าเช่าให้รถทุกคันในฟลีตสิบห้าคัน โปรแกรมจะคิดว่าออกรถอีกคันแพง 2,000 บาท แล้วเลือกทิ้งจุดส่งแทนที่จะออกรถ

ในหน้าจอจึงมีทั้ง ค่าเช่า/คัน (บาท) และจำนวนคันที่เป็นรถเช่า แยกจากจำนวนคันทั้งหมด รถที่ไม่ได้ระบุว่าเช่าคือรถของเรา และไม่มีค่าเรียกใช้

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

เป้าหมายอยู่ในก้อน objective:

{
  "objective": {
    "strategy": "min_cost",
    "distance_cost_per_km": 8,
    "extra_vehicle_activation_cost": 2000
  }
}

strategy รับ min_vans min_distance หรือ min_cost ไม่ส่งมาคือ min_vans สองตัวเลขนั้นเป็นค่ากลาง ใช้กับชนิดรถที่ไม่ได้ระบุของตัวเอง

ค่าจริงของรถแต่ละชนิดอยู่บนชนิดรถ:

{
  "type_name": "6 ล้อ",
  "van_count": 1,
  "shift_start": "08:00",
  "shift_end": "17:00",
  "capacity_kg": 1500,
  "capacity_cm3": 8000000,
  "cost_per_km": 14,
  "owned_count": 1,
  "rent_cost": null
}

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

cost_per_km เป็น null คือใช้ distance_cost_per_km ของแผน ไม่ใช่ศูนย์

6ลองเอง

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