บทที่ 8
หกบทที่ผ่านมาจัดรถให้น้อยที่สุดมาตลอด เพราะนั่นคือค่าตั้งต้น บทนี้คือวันที่รถน้อยกว่าแพงกว่าเท่าตัว
วันจันทร์เดิม แต่ในคลังมีรถหกล้อหนึ่งคัน กับรถสี่ล้อสามคัน
คลังบางนามีรถหกล้อหนึ่งคัน รับได้ 1,500 กิโล ของทั้งวัน 990 กิโลขึ้นคันเดียวได้สบาย และมีรถสี่ล้อสามคัน รับได้คันละ 500
รถหกล้อกินน้ำมันมากกว่า ค่าวิ่งของมันคือ 14 บาทต่อกิโล ส่วนสี่ล้ออยู่ที่ 6 บาท ตัวเลขนี้เปลี่ยนคำตอบทั้งหมด
เป้าหมายที่สามจะต่างจากอีกสองอันก็ต่อเมื่อรถในคลังไม่เหมือนกัน ถ้าทุกคันเหมือนกันหมด สามอันนี้ให้คำตอบเดียวกัน เพราะรถน้อยคันก็วิ่งเข้าออกคลังน้อยรอบ กิโลก็น้อย เงินก็น้อยตามกัน
ค่าวิ่งของรถแต่ละชนิดอยู่ใน ⚙ รายละเอียด ของคลัง
เลือก ระยะทางสั้นที่สุด ในวันเดียวกันได้คำตอบเดิม 50.0 กิโล 700 บาท เพราะเส้นที่สั้นที่สุดก็คือรถคันเดียววิ่งรอบเดียวอยู่แล้ว
เทียบสองแผน รถสองคันวิ่งไกลกว่า 3.5 กิโล แต่จ่ายน้อยกว่า 379 บาท คิดเป็น 54% ของราคาเดิม
นี่คือเหตุผลที่ “ใช้รถน้อยที่สุด” กับ “ถูกที่สุด” ไม่ใช่คำเดียวกัน และเหตุผลที่ “วิ่งสั้นที่สุด” ก็ไม่ใช่ด้วย วันนี้แผนที่วิ่งไกลที่สุดในสามแผนคือแผนที่ถูกที่สุด
ทำไมไม่ตั้งต้นด้วยต้นทุนต่ำที่สุดไปเลย
เพราะมันเชื่อตัวเลขที่ใส่มา ถ้าค่าวิ่งต่อกิโลกับค่าเช่ารถยังไม่ได้ตั้งจริง โปรแกรมจะเอาค่ากลางไปคิด แล้วคืนคำตอบที่ดูมีเหตุผลแต่อ้างอิงราคาที่ไม่ใช่ของเรา ใช้รถน้อยที่สุดไม่ต้องรู้ราคาอะไรเลยก็ตอบได้ จึงเป็นค่าตั้งต้นที่ปลอดภัยกว่า
ต้นทุนมีสองก้อน ค่าวิ่งต่อกิโล กับค่าเรียกใช้รถต่อคัน ก้อนที่สองมีไว้สำหรับรถที่ต้องจ่ายเพิ่มจริงเมื่อเรียกใช้ คือรถเช่าหรือรถซับ
รถที่บริษัทมีอยู่แล้วไม่ควรมีค่าเรียกใช้ เพราะจ่ายไปแล้วไม่ว่าจะออกวิ่งหรือไม่ ถ้าใส่ค่าเช่าให้รถทุกคันในฟลีตสิบห้าคัน โปรแกรมจะคิดว่าออกรถอีกคันแพง 2,000 บาท แล้วเลือกทิ้งจุดส่งแทนที่จะออกรถ
ในหน้าจอจึงมีทั้ง ค่าเช่า/คัน (บาท) และจำนวนคันที่เป็นรถเช่า แยกจากจำนวนคันทั้งหมด รถที่ไม่ได้ระบุว่าเช่าคือรถของเรา และไม่มีค่าเรียกใช้
เป้าหมายอยู่ในก้อน 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 ของแผน ไม่ใช่ศูนย์