บทที่ 4

ร้านเปิดเก้าโมง

แผนบทที่ 1 ส่งซีคอนตอนแปดโมงยี่สิบ ซึ่งตอนนั้นฟู้ดคอร์ทยังไม่เปิด บทนี้คือวิธีบอกโปรแกรมว่าจุดไหนรับของได้ช่วงไหน

วันเดิม จุดเดิม แต่มีสามร้านที่ใส่ช่วงเวลารับของไว้แล้ว

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

แผนวันจันทร์ดูดีบนจอ แต่พอปล่อยรถจริงมีสามจุดที่ไปเสียเที่ยว

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

2ทำยังไง

  1. เปิด ⚙ รายละเอียด ของจุดส่ง แล้วกรอกแถว ช่วงเวลารับส่ง สองช่อง ช่องซ้ายคือเวลาที่เริ่มรับได้ ช่องขวาคือเวลาสุดท้าย

    รายละเอียดของจุดส่ง มีแถวช่วงเวลารับส่ง สองช่อง 09:00 ถึง 11:00 ช่องแรกมีวงสีแดงรอบ
    กรอกช่องเดียวก็ได้ ใส่แต่ช่องซ้ายคือ “ไม่ก่อนเวลานี้” ใส่แต่ช่องขวาคือ “ไม่หลังเวลานี้”
  2. ดูที่แถวจุดส่ง จุดที่มีช่วงเวลาจะขึ้นรูปนาฬิกาต่อท้าย ใช้กวาดตาดูทั้งตารางว่าใส่ไปกี่จุดแล้ว

    แถวจุดส่งฟู้ดคอร์ทซีคอน 110 กก. 220 ลิตร ตามด้วยรูปนาฬิกา
    รูปนาฬิกาบอกว่าจุดนี้มีเงื่อนไขเวลา ไม่ได้บอกว่าช่วงไหน ต้องเปิดดู
  3. กด วางแผนเส้นทาง ใหม่

3อ่านคำตอบ

บรรทัดสรุปผล: รถ 1 คัน · จุดส่ง 12 จุด · 51.4 กม. · 411 บาท · ตรงเวลาทุกคัน
ครบ 12 จุดเหมือนเดิม รถคันเดียวเหมือนเดิม แต่ระยะทางขึ้นจาก 50.0 เป็น 51.4 กิโล

1.4 กิโลนั้นคือราคาของเงื่อนไขเวลา และมันคุ้ม เพราะเที่ยวเสียหนึ่งเที่ยว แพงกว่า 1.4 กิโลอยู่แล้ว

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

ไทม์ไลน์ของรถคันที่ 1 แถบสีเขียวคืออยู่ที่จุดส่ง สีฟ้าคือกำลังขับ รวมขับ 1.4 ชม. อยู่ที่จุดส่ง 3.0 ชม. ตั้งแต่ 08:00 ถึงประมาณ 12:20
แท็บ ไทม์ไลน์ คือที่ที่เห็นว่าเวลาหมดไปกับอะไร สีฟ้าคือขับ สีเขียวคือยืนส่งของ สีเหลืองคือรอ — ถ้าเงื่อนไขเวลาบีบมาก จะเห็นสีเหลืองโผล่ขึ้นมา แปลว่ารถไปถึงก่อนร้านเปิด

4ช่วงเวลาที่ไปไม่ทันจริง ๆ

ถ้าใส่ช่วงเวลาที่รถไปไม่ได้เลย โปรแกรมจะไม่ยัดให้ และไม่โกงเวลาให้ด้วย ลองใส่ให้ทองหล่อรับของ 06:00–07:00 ทั้งที่รถเริ่มงานแปดโมง

บรรทัดสรุปผล: รถ 1 คัน · 11 จาก 12 จุด · 46.0 กม. · 368 บาท · ตรงเวลาทุกคัน · 1 จุดจัดไม่ได้
11 จาก 12 จุด และบอกตรง ๆ ว่าเหลือ 1 จุดที่จัดไม่ได้
แถบแจ้งเตือน: มี 1 จุดที่จัดเข้าแผนไม่ได้ — 1 จุด ไม่มีรถคันไหนมีที่ว่างหรือเวลาพอ เพิ่มรถ ขยายเวลาทำงาน หรือขยายช่วงเวลาส่งของ พร้อมปุ่มดูจุดเหล่านี้
แถบนี้บอกทางแก้ให้สามทาง และกด ดูจุดเหล่านี้ แล้วแผนที่จะซูมไปที่จุดที่ค้าง ไม่ต้องไล่หาในตาราง

อย่าใส่ช่วงเวลาทุกจุด

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

5เวลาที่เห็นในแผน ไม่ใช่เวลานัด

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

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

สองฟิลด์ บนจุดส่ง เป็นเวลา 24 ชั่วโมงแบบ HH:MM:

{
  "order_id": "A-08",
  "location": { "lat": 13.6935, "lng": 100.6465 },
  "weight_kg": 110,
  "volume_cm3": 220000,
  "depot_id": "บางนา",
  "time_window_start": "09:00",
  "time_window_end": "11:00"
}

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

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

6ลองเอง

  1. ใส่ช่วงเวลา 08:00–09:00 ให้จุดที่อยู่ไกลสุด แล้ววางแผนใหม่ ดูว่าโปรแกรมยอมวิ่งไกลขึ้นเท่าไหร่เพื่อให้ทัน
  2. ใส่ 14:00–15:00 ให้จุดหนึ่ง แล้วดูแท็บ ไทม์ไลน์ — ถ้ามีสีเหลือง นั่นคือคนขับนั่งรอ ซึ่งเป็นเวลาที่จ่ายไปเปล่า ๆ
  3. ใส่ช่วงเวลาแคบ ๆ ให้หลายจุดพร้อมกัน แล้วดูว่าโปรแกรมเริ่มใช้รถคันที่สองตอนไหน