ไฟเขียวเป็นของใคร

มาเรียนรู้แนวคิดจาก simulation ของ sael.net/traffic ว่าสามารถนำไปประยุกต์ใช้ควบคุมสัญญาณไฟจราจรจริงได้อย่างไร ตั้งแต่ตัวตรวจจับ ตรรกะของตัวควบคุม ไปจนถึงลำดับการติดตั้งและวิธีวัดผล

แนวคิดหลักของ sim สั้นมาก สี่แยกมีของให้แจกอย่างเดียวคือ เวลา เวลาเขียวของทางหนึ่งคือเวลาแดงของทุกทางที่เหลือ คำถามเดียวที่สัญญาณต้องตอบคือ ใครควรได้เวลานั้นก่อน

ภาพหน้าจอ simulation Who Gets the Green? ของ sael.net แสดงสี่แยกมุมมองจากด้านบนพร้อมแผงเปรียบเทียบไฟตายตัวกับไฟปรับตามรถ

ดูตัวเต็มของต้นฉบับ

ตัวจริงเป็นสี่แยก 3 มิติที่หมุนดูได้ มีทั้งรถบัส ขบวนจักรยาน คนเดินเท้า และรถพยาบาล เปลี่ยนสลับระหว่างไฟตายตัวกับไฟปรับตามรถได้ด้วยปุ่ม T และกด 1 / 2 / 3 เพื่อส่งบัส จักรยาน รถพยาบาล

เปิดใน sael.net

ภาพหน้าจอจากเว็บ Who Gets the Green? โดย ONE HTML LAB หน้านี้เปิดลิงก์ไปยังเว็บไซต์ต้นฉบับโดยตรง

ลองเอง: ไฟตายตัวกับไฟปรับตามรถจริง

สองสี่แยกนี้รับรถชุดเดียวกัน มาถึงวินาทีเดียวกัน ต่างกันแค่วิธีตัดสินใจ ฝั่งซ้ายเดินตามตารางเวลา ฝั่งขวาดูตัวตรวจจับสีฟ้าที่ปากทาง แล้วต่อ ตัด หรือข้ามเฟสตามรถที่เห็น (ขับชิดซ้ายแบบไทย ตัดการเลี้ยวออกเพื่อให้เห็นหลักการชัด)

ไฟตายตัว

—
—วินาที รอเฉลี่ยต่อคัน
0คันที่ติดคิวตอนนี้
—รถพยาบาลเสียเวลา (s)

ไฟปรับตามรถจริง

—
—วินาที รอเฉลี่ยต่อคัน
0คันที่ติดคิวตอนนี้
—รถพยาบาลเสียเวลา (s)
กำลังเก็บข้อมูล…ปล่อยให้รันสักครู่ แล้วลองเปลี่ยนปริมาณจราจร

นี่คือแบบจำลองย่อที่สร้างขึ้นตามหลักการของ sim ต้นฉบับ (รถวิ่งตามแบบ Intelligent Driver Model, มาถึงแบบสุ่ม Poisson, รอบไฟตายตัวย่อเหลือ 61 วินาที) ตัวเลขที่เห็นจึงใช้ดูแนวโน้ม ไม่ใช่ค่าที่จะอ้างอิงกับสี่แยกจริง ปุ่มรถพยาบาลจะให้รถวิ่งเข้ามาจากทางสุ่ม สังเกตว่าไฟฝั่งขวาเปลี่ยนเพื่อให้รถพยาบาลก่อนหรือไม่

ตัวเลขใน sim ที่ใช้เป็นค่าตั้งต้นได้

ค่าเหล่านี้ sim ต้นฉบับระบุไว้ชัดเจน และแทบทุกค่ามีคู่เทียบในระบบจริง ตารางนี้จับคู่ให้ พร้อมสิ่งที่ควรทำกับค่านั้น

ส่วนของ simค่าที่ sim ใช้ของจริงคืออะไรควรทำอะไร
ไฟตายตัว86 s ต่อรอบ = ซ้ายตะวันออก–ตะวันตก 9 + ตรงตะวันออก–ตะวันตก 30 + ซ้ายเหนือ–ใต้ 7 + ตรงเหนือ–ใต้ 22 และเหลือง 3 + แดงทั้งหมด 1.5 ต่อเฟสแผนเวลาแบบ fixed-time ที่ปรับให้เหมาะกับ "ปริมาณเฉลี่ย"ใช้เป็น baseline เสมอ และเก็บเป็นแผนสำรองตอนตัวตรวจจับเสีย
โซนตรวจจับกรอบสีฟ้าที่ปากทางแต่ละเลนห่วงเหนี่ยวนำใต้ผิวถนน กล้องวิดีโอ เรดาร์ (เลนจักรยานใช้กล้อง เรดาร์ หรือห่วงแบบไวต่อจักรยาน)วางระยะจากความเร็วรถ × ช่องว่างที่ยอมให้ขาดได้ เช่น 12 m/s × 3 s ≈ 36 ม.
เขียวขั้นต่ำ / ต่อ / ตัด / สูงสุดเขียวนานอย่างน้อยช่วงหนึ่ง ต่อเมื่อรถยังมา ตัดเมื่อรถขาดช่วง หรือมีคนรออยู่ทางอื่นมากกว่า หรือถึงเวลาสูงสุด ข้ามเฟสที่ว่างตัวควบคุมแบบ actuated: minimum green, passage/extension time, gap-out, max green, phase skipตั้งค่าจากข้อมูลนับรถของแยกนั้น ๆ อย่าลืม max green เพื่อกันทางรองอดตาย
คนข้ามถนนข้าม 17 ม. ใน 14 s (≈ 1.2 m/s) คนเดินจริง 1.25–1.55 m/sปุ่มกดหรือกล้องตรวจจับคนรอ + เวลาเคลียร์คนข้ามคำนวณเวลาจากความกว้างถนน ÷ ความเร็วของคนที่เดินช้าที่สุด (ผู้สูงอายุ วีลแชร์) ไม่ใช่ค่าเฉลี่ย
รถบัสเช็คอินที่ ~110 ม. ต่อเขียว ≤ 10 s หรือย่นเฟสอื่นให้สั้นสุด ครั้งละคัน และห่างกัน ≥ 30 sTransit Signal Priority ผ่าน AVL/GPS บนรถ หรือตัวตรวจจับในช่องทางบัสตั้งเพดานทั้งจำนวนครั้งและเวลาต่อ เพื่อไม่ให้ทางรองโดนบัสกินเวลาทั้งหมด
รถพยาบาลแจ้งล่วงหน้า ~260 ม. ปิดเฟสเดิมอย่างปลอดภัยแล้วให้เขียวEmergency vehicle preemption (GPS วิทยุ หรืออินฟราเรด)เคลียร์คนข้ามให้ครบก่อนเสมอ และบันทึกทุกครั้งที่ preempt
Saturation flow≈ 1,900 คัน/ชม. เขียว/เลนค่าตั้งต้นของสูตรออกแบบสัญญาณ (เช่น Webster)วัดซ้ำที่หน้างาน ถนนที่มีมอเตอร์ไซค์แทรกเลนค่าจะต่างไปมาก

จากข้อมูลใน sim ต้นฉบับ (ช่วง rush hour, เร่ง 4×) เวลารอเฉลี่ยของไฟตายตัวอยู่ที่ 61 วินาที ส่วนไฟปรับตามรถอยู่ที่ 56 วินาที ลดลงราว 8% ตัวเลขนี้เตือนเรื่องสำคัญไว้ว่า ตอนรถแน่น ตารางเวลาที่ปรับมาดีอยู่แล้วสู้ได้ค่อนข้างสูสี ส่วนที่ไฟปรับตามรถชนะขาดคือช่วงรถบาง และเหตุการณ์พิเศษอย่างรถบัส ขบวนจักรยาน และรถพยาบาล

หกแนวคิดที่ย้ายจาก sim ไปสู่ถนนจริงได้

1. เปลี่ยนจากตารางเวลาเป็น "ตอบสนองตามรถ"

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

ทำจริง: ติดตัวตรวจจับที่ทุกเลน แล้วเปลี่ยนตัวควบคุมเป็นโหมด actuated เริ่มจากแยกที่ปริมาณรถแกว่งตามช่วงเวลามากที่สุด

ตายตัว (86 s ทุกรอบ)
9 อ–ต 30 7 น–ต 22
ปรับตามรถ (ตัวอย่างช่วงรถบาง: เขียวสั้น ข้ามเฟสซ้ายที่ไม่มีรถ และต่อเขียวเมื่อมีขบวนรถ)
อ–ต 14 น–ต 9 อ–ต 43 (ต่อ) 7
ตะวันออก–ตะวันตก (อ–ต)เหนือ–ใต้ (น–ต)เลี้ยวซ้ายเหลือง + แดงทั้งหมด
ภาพประกอบเชิงแนวคิด ตัวเลขวินาทีของแถวล่างเป็นตัวอย่าง ไม่ได้มาจาก sim โดยตรง

2. ชั่งน้ำหนักคิวด้วย "จำนวนคน" และ "เวลาที่รอมาแล้ว"

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

ทำจริง: ใช้ข้อมูลผู้โดยสารจากบัส (เครื่องนับผู้โดยสารหรือค่าประมาณตามสาย) เป็นน้ำหนักในการตัดสินใจ และตั้งเป็นนโยบายให้ชัดว่าจะให้น้ำหนักบัส จักรยาน และคนเดินเท่าไร

บัส 1 คัน
รถเก๋ง 6 คัน

ถ้านับตามคัน คิวรถเก๋งยาวกว่า 6 เท่า ถ้านับตามคน บัสคันเดียวอาจมีคนรอมากกว่า

ภาพประกอบเชิงแนวคิด สมมติบัส 30 คน รถเก๋งคันละ 1.5 คน

3. ให้สิทธิ์บัสก่อน แต่มีเพดาน

เมื่อบัสเช็คอินที่ระยะประมาณ 110 เมตร สัญญาณมีสองทางเลือก ถ้าเขียวอยู่ก็ต่อให้ไม่เกิน 10 วินาที ถ้าแดงอยู่ก็ย่นเฟสอื่นให้เหลือขั้นต่ำเพื่อให้เขียวมาเร็วขึ้น และรับได้ครั้งละคัน ห่างกันอย่างน้อย 30 วินาที ป้ายจอดอยู่หลังสี่แยก บัสจึงไม่ต้องรอไฟแดงตอนขึ้นลงคน

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

บัส เช็คอินที่ ~110 ม. ก่อนถึงเส้นหยุด เจอเขียวใกล้หมด: ต่อเขียวให้ (สูงสุด 10 s) เขียวเดิมจะหมดตรงนี้ +ต่อ แดง เจอแดง: ย่นเฟสอื่นให้เหลือขั้นต่ำ แล้วให้เขียวเร็วขึ้น ทางอื่น (ถูกย่น) เขียวให้บัส (เร็วขึ้น) เส้นประ = ตำแหน่งที่เขียวจะเริ่มถ้าไม่มี priority
ภาพประกอบเชิงแนวคิด สัดส่วนความยาวไม่ตรงตามมาตราส่วนจริง

4. รอให้ขบวนจักรยานผ่านครบ ไม่ตัดกลางกลุ่ม

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

ทำจริง: ติดกล้องความร้อนหรือเรดาร์ในเลนจักรยานก่อนถึงแยก ตั้ง gap-out ให้สั้นกว่ารถยนต์ เพราะคนปั่นเรียงกันชิดกว่า และเก็บสถิติว่ามีกี่ครั้งที่ขบวนถูกตัด

ตัวอย่างขบวนจักรยาน 8 คัน กับไฟที่เปลี่ยนตรงกลางขบวน
ตายตัว: เขียวหมดหลังคันที่ 4 อีก 4 คันต้องรอรอบหน้า
ปรับตามรถ: ตัวตรวจจับยังเห็นขบวนอยู่ จึงต่อเขียว
เขียวต่อจนคันที่ 8 ผ่าน
ภาพประกอบเชิงแนวคิด

5. เปิดทางรถพยาบาล โดยไม่ลดความปลอดภัยของคนข้าม

sim รู้ล่วงหน้าราว 260 เมตร (แบบ GPS) แล้วปิดเฟสปัจจุบันอย่างปลอดภัย คนที่กำลังข้ามได้เวลาเคลียร์ครบเสมอ จากนั้นเหลือง แดงทั้งหมด แล้วเขียวให้ทางรถพยาบาลเร็วพอให้คิวหน้ารถพยาบาลเคลื่อนตัว ที่เหลือรอจนรถผ่าน แล้วค่อยเสิร์ฟคนที่รอนานที่สุด

ลองคำนวณดู: รถพยาบาลวิ่ง 50 กม./ชม. (≈ 13.9 m/s) ใช้เวลาราว 19 วินาทีต่อ 260 เมตร ขณะที่เวลาเคลียร์คนข้ามถนน 17 ม. ใน sim คือ 14 วินาที ระยะ 260 ม. จึงเป็นค่าที่ "เพิ่งพอ" ไม่ใช่ค่าเผื่อเยอะ ถนนกว้างกว่านี้หรือรถวิ่งเร็วกว่านี้ต้องแจ้งเตือนไกลขึ้น

ทำจริง: ตกลงกับหน่วยฉุกเฉินเรื่องอุปกรณ์และระยะแจ้งเตือน ทดสอบลำดับการเปลี่ยนไฟกับตัวควบคุมจริง และบันทึกทุกเหตุการณ์ preempt เพื่อตรวจสอบภายหลัง

งบเวลาตั้งแต่แจ้งเตือนที่ 260 ม. (รถพยาบาล 50 กม./ชม. ≈ 19 s)
เคลียร์คนข้าม ≤ 14 s (รวมเหลือง/แดงทั้งหมดตามที่ sim ระบุ) เขียว ~5 s

ถ้าคนกำลังข้ามอยู่พอดี เวลาที่เหลือให้คิวหน้ารถพยาบาลระบายมีแค่ราว 5 วินาที

แจ้งเตือน~260 ม. เคลียร์คนแล้วเหลือง แดงทั้งหมด1.5 s เขียวจนรถผ่าน คืนปกติให้คนรอนาน
ค่า 19 วินาทีเป็นการคำนวณโดยประมาณจากความเร็วและระยะทาง ไม่ได้ระบุใน sim โดยตรง

6. คนเดินเท้า: ให้สัญญาณเมื่อมีคนรอจริง

sim ให้สัญญาณข้ามถนนเมื่อมีคนรอ แม้กลางเฟสเขียวก็ให้ได้ถ้าเวลาเหลือพอ เวลาข้ามคำนวณให้คนที่เดินช้ากว่าค่าเฉลี่ย ทำให้คนเดินไม่ต้องรอครบรอบทุกครั้ง

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

17 ม.ความกว้างทางข้ามใน sim
14 sเวลาเคลียร์ให้ข้ามครบ
≈ 1.2 m/sความเร็วที่ใช้คำนวณ (17 ÷ 14)
ค่าจาก sim ต้นฉบับ ผู้สูงอายุ ผู้ใช้วีลแชร์ และเด็กเล็กอาจเดินช้ากว่านี้มาก

ระบบจริงหน้าตาเป็นอย่างไร

สิ่งที่ sim เรียกว่า "สัญญาณที่ดูสิ่งรอบตัว" ในของจริงคือชุดอุปกรณ์สี่กลุ่มที่ต่อกัน ประเด็นสำคัญคือตัวควบคุมที่สี่แยกต้องตัดสินใจเองได้ และต้องมีชั้นความปลอดภัยที่ระบบปรับเวลาแก้ไขไม่ได้

ศูนย์ควบคุม (ระดับเส้นทาง) ประสานหลายแยก เช่น SCATS / SCOOT ตัวตรวจจับรถห่วงเหนี่ยวนำ / กล้อง / เรดาร์ คนเดิน + จักรยานปุ่มกด / กล้อง / เรดาร์เลนจักรยาน บัสGPS / AVL ส่งคำขอ priority รถฉุกเฉินGPS / วิทยุ / อินฟราเรด ตัวควบคุมที่สี่แยก ตรรกะ actuatedเขียวขั้นต่ำ / ต่อ / ตัด / สูงสุด Priority + Preemptบัส (มีเพดาน) / รถฉุกเฉิน Conflict monitorห้ามเขียวชนกัน แก้ไม่ได้จากตรรกะ แผนสำรอง fixed-timeใช้เมื่อตัวตรวจจับเสีย หัวสัญญาณรถ / คนเดิน / จักรยานเหลือง + แดงทั้งหมด บันทึกเหตุการณ์ + แดชบอร์ด KPI
ภาพประกอบเชิงแนวคิด ชื่อระบบ SCATS และ SCOOT เป็นตัวอย่างระบบประสานเส้นทางที่ sim ต้นฉบับเอ่ยถึง ซึ่งสี่แยกเดียวใน sim แสดงไม่ได้

ลงมือทำตามลำดับนี้

ลำดับนี้ไล่จากความเสี่ยงต่ำและได้ข้อมูลก่อน ไปหาสิ่งที่ต้องประสานหลายหน่วยงานทีหลัง

  1. วัดสถานการณ์ปัจจุบันก่อน

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

    วัดผลด้วย: delay ต่อคน · คิวสูงสุด · จำนวนรอบที่คิวระบายไม่หมด

  2. ติดตัวตรวจจับ แล้วเปิดโหมด actuated

    เลือกแยกที่ปริมาณรถแกว่งมาก ตั้งเขียวขั้นต่ำ ตัวต่อ และเพดานสูงสุดจากข้อมูลที่วัดมา เปิดแผน fixed เดิมเป็นแผนสำรองตลอด

    วัดผลด้วย: เวลารอเฉลี่ยช่วงรถบาง · สัดส่วนเขียวที่ไม่มีรถใช้

  3. เพิ่มคนเดินเท้าและจักรยาน

    ให้สัญญาณข้ามเมื่อมีคนรอจริง ตั้งเวลาข้ามตามคนที่เดินช้า และเพิ่มตัวตรวจจับขบวนจักรยานในเลนของมัน

    วัดผลด้วย: เวลารอของคนเดิน · จำนวนครั้งที่ขบวนจักรยานถูกตัด

  4. เปิด priority ให้บัส

    ติด AVL/GPS ตั้งเงื่อนไขครั้งละคัน ห่างกันอย่างน้อย 30 วินาที และเพดานต่อเขียว 10 วินาทีตามที่ sim ใช้เป็นจุดเริ่มต้น แล้วปรับตามผลกระทบต่อทางรอง

    วัดผลด้วย: ความแปรปรวนของเวลาเดินทางบัส · เวลารอของทางรอง

  5. เปิด preemption ให้รถฉุกเฉิน

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

    วัดผลด้วย: เวลาที่รถฉุกเฉินเสียที่แยก · จำนวนเหตุการณ์ที่ตรวจสอบย้อนหลังได้

  6. ขยายเป็นทั้งเส้นทาง

    เมื่อหลายแยกทำงานได้ดีแล้ว จึงประสานกันตามแนวถนนหลัก ซึ่งเป็นส่วนที่ sim สี่แยกเดียวแสดงไม่ได้

    วัดผลด้วย: เวลาเดินทางตลอดเส้นทาง · จำนวนครั้งที่หยุดต่อกิโลเมตร

สิ่งที่ sim ยังบอกไม่ได้

sim ต้นฉบับเองก็ระบุว่าเป็นตัวควบคุมแบบ actuated ที่ย่อไว้ ก่อนเอาไปใช้จริงควรรู้ว่าอะไรถูกทำให้ง่ายกว่าความเป็นจริง

แยกเดียว ไม่มีคลื่นเขียว

ในถนนจริงรถมาเป็นก้อนจากแยกก่อนหน้า การประสานหลายแยกอาจให้ผลมากกว่าการปรับแยกเดียว

รถมาแบบสุ่มสม่ำเสมอ

sim ใช้การมาถึงแบบ Poisson ส่วนจริงมีชั่วโมงเร่งด่วน เหตุการณ์ และเวลาเลิกเรียนที่ทำให้แบบแผนเปลี่ยนไป

ตัวตรวจจับไม่เคยพลาด

ของจริงมีเซนเซอร์เสีย ฝน แดดสะท้อน และรถจอดทับห่วง จึงต้องมีแผนสำรอง fixed-time และแจ้งเตือนเมื่ออุปกรณ์ผิดปกติ

ทุกคนทำตามกฎ

รถใน sim ขับตามโมเดล IDM เหมือนกันหมด ของจริงมีรถฝ่าไฟและมอเตอร์ไซค์แทรกช่อง ต้องปรับพารามิเตอร์ให้ตรงกับสนาม

ผลต่างตอนรถแน่นไม่ได้มหาศาล

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

"ใครควรได้ก่อน" คือคำถามเชิงนโยบาย

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