บทที่ 1
แผนแรกของเรา คลังหนึ่งแห่ง รถแบบเดียว จุดส่ง 12 จุด ไม่มีเงื่อนไขอะไรทั้งนั้น บทนี้คือการใส่ของวันหนึ่งเข้าไป กดปุ่มเดียว แล้วอ่านคำตอบ
กดแล้วได้คลัง จุดส่ง และรถชุดเดียวกับในภาพทั้งบท จะกดตามไปทีละขั้น หรืออ่านจบก่อนแล้วค่อยกดก็ได้
เราเป็นเจ้าของรถส่งของอยู่สามคัน ที่คลังบางนา เช้าวันจันทร์มีออร์เดอร์เข้ามา 12 จุด ตั้งแต่อ่อนนุชยาวไปถึงเมกาบางนา
เมื่อก่อนเราจัดเองบนกระดาษ ไล่จากจุดที่คุ้นที่สุดไปจุดที่ไกลสุด ใช้เวลาประมาณครึ่งชั่วโมง และตอบไม่ได้สักข้อว่ารถต้องวิ่งกี่กิโล ใช้รถกี่คันถึงจะพอ หรือจะกลับถึงคลังกี่โมง
สามคำถามนี้คือสิ่งที่โปรแกรมตอบให้ได้ในไม่กี่วินาที
ใส่คลังก่อน แผนที่เปิดมายังว่าง กด เพิ่มคลังของคุณ แล้วพิมพ์ชื่อคลังหรือชื่อถนนลงไป โปรแกรมจะค้นหาให้ ถ้าหาไม่เจอ คลิกขวาบนแผนที่ตรงตำแหน่งคลังก็วางได้เลย
คลังคือที่ที่รถออกและกลับ ตั้งได้หลายแห่ง แต่บทนี้เอาแห่งเดียวก่อน
ใส่จุดส่ง กด + เพิ่มจุดส่ง ทีละจุด หรือคลิกขวาบนแผนที่ก็ได้เหมือนกัน แต่ละจุดใส่ชื่อร้าน น้ำหนัก และปริมาตร ถ้าข้อมูลอยู่ใน Excel อยู่แล้ว ข้ามไปบทที่ 15 ได้ ไม่ต้องพิมพ์ทีละแถว
กดวางแผนเส้นทาง ปุ่มอยู่ล่างสุดของแถบซ้าย กดแล้วรอไม่กี่วินาที
บรรทัดแรกที่ขึ้นมาคือคำตอบของทั้งวัน อ่านจากซ้ายไปขวา
บนแผนที่ ตัวเลขในวงกลมคือลำดับที่รถต้องไป เส้นคือทางที่รถวิ่งจริง
การ์ดของรถแต่ละคันบอกรายละเอียดของคันนั้น
วันนี้เรียบง่ายเพราะเรายังไม่ได้บอกอะไรมาก โปรแกรมจึงคิดว่า ทุกร้านรับของได้ทุกเวลา ของขึ้นรถได้หมด และรถทุกคันเหมือนกัน ซึ่งวันจริงไม่ใช่แบบนั้น
แต่ละบทเพิ่มเงื่อนไขทีละข้อ กับบริษัทเดิม คลังเดิม และรถกองเดิมนี้
วันหนึ่งวันคือก้อนเดียว มีคลังกับจุดส่ง จุดส่งบอกน้ำหนักกับปริมาตร และบอกว่าออกจากคลังไหน:
{
"provider": "osrm",
"date": "2026-08-24",
"depots": [
{
"depot_id": "บางนา",
"name": "คลังบางนา",
"location": { "lat": 13.672, "lng": 100.63 },
"van_types": [
{ "type_name": "4 ล้อ", "van_count": 3,
"shift_start": "08:00", "shift_end": "17:00",
"capacity_kg": 1500, "capacity_cm3": 8000000 }
]
}
],
"jobs": [
{ "order_id": "A-01", "location": { "lat": 13.706, "lng": 100.601 },
"weight_kg": 80, "volume_cm3": 160000, "depot_id": "บางนา",
"metadata": { "customer_name": "ร้านของชำอ่อนนุช" } }
]
}
provider คือตัวคิดระยะทาง osrm คิดตามถนนจริง
อีกตัวคือ haversine ซึ่งลากเส้นตรง เร็วกว่าแต่ระยะไม่ใช่ของจริง
ใช้ตอนทดสอบเท่านั้น
ส่งก้อนนี้ไปที่ POST /api/solve จะได้แผนกลับมาเป็น JSON
หน้าจอที่เห็นในบทนี้อ่านจากก้อนเดียวกัน
สามอย่างที่ควรลองด้วยมือ: