มาเรียนรู้แนวคิดจาก simulation ของ sael.net/traffic ว่าสามารถนำไปประยุกต์ใช้ควบคุมสัญญาณไฟจราจรจริงได้อย่างไร ตั้งแต่ตัวตรวจจับ ตรรกะของตัวควบคุม ไปจนถึงลำดับการติดตั้งและวิธีวัดผล
แนวคิดหลักของ sim สั้นมาก สี่แยกมีของให้แจกอย่างเดียวคือ เวลา เวลาเขียวของทางหนึ่งคือเวลาแดงของทุกทางที่เหลือ คำถามเดียวที่สัญญาณต้องตอบคือ ใครควรได้เวลานั้นก่อน
ตัวจริงเป็นสี่แยก 3 มิติที่หมุนดูได้ มีทั้งรถบัส ขบวนจักรยาน คนเดินเท้า และรถพยาบาล เปลี่ยนสลับระหว่างไฟตายตัวกับไฟปรับตามรถได้ด้วยปุ่ม T และกด 1 / 2 / 3 เพื่อส่งบัส จักรยาน รถพยาบาล
เปิดใน sael.netภาพหน้าจอจากเว็บ Who Gets the Green? โดย ONE HTML LAB หน้านี้เปิดลิงก์ไปยังเว็บไซต์ต้นฉบับโดยตรง
สองสี่แยกนี้รับรถชุดเดียวกัน มาถึงวินาทีเดียวกัน ต่างกันแค่วิธีตัดสินใจ ฝั่งซ้ายเดินตามตารางเวลา ฝั่งขวาดูตัวตรวจจับสีฟ้าที่ปากทาง แล้วต่อ ตัด หรือข้ามเฟสตามรถที่เห็น (ขับชิดซ้ายแบบไทย ตัดการเลี้ยวออกเพื่อให้เห็นหลักการชัด)
นี่คือแบบจำลองย่อที่สร้างขึ้นตามหลักการของ sim ต้นฉบับ (รถวิ่งตามแบบ Intelligent Driver Model, มาถึงแบบสุ่ม Poisson, รอบไฟตายตัวย่อเหลือ 61 วินาที) ตัวเลขที่เห็นจึงใช้ดูแนวโน้ม ไม่ใช่ค่าที่จะอ้างอิงกับสี่แยกจริง ปุ่มรถพยาบาลจะให้รถวิ่งเข้ามาจากทางสุ่ม สังเกตว่าไฟฝั่งขวาเปลี่ยนเพื่อให้รถพยาบาลก่อนหรือไม่
ค่าเหล่านี้ 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 s | Transit Signal Priority ผ่าน AVL/GPS บนรถ หรือตัวตรวจจับในช่องทางบัส | ตั้งเพดานทั้งจำนวนครั้งและเวลาต่อ เพื่อไม่ให้ทางรองโดนบัสกินเวลาทั้งหมด |
| รถพยาบาล | แจ้งล่วงหน้า ~260 ม. ปิดเฟสเดิมอย่างปลอดภัยแล้วให้เขียว | Emergency vehicle preemption (GPS วิทยุ หรืออินฟราเรด) | เคลียร์คนข้ามให้ครบก่อนเสมอ และบันทึกทุกครั้งที่ preempt |
| Saturation flow | ≈ 1,900 คัน/ชม. เขียว/เลน | ค่าตั้งต้นของสูตรออกแบบสัญญาณ (เช่น Webster) | วัดซ้ำที่หน้างาน ถนนที่มีมอเตอร์ไซค์แทรกเลนค่าจะต่างไปมาก |
จากข้อมูลใน sim ต้นฉบับ (ช่วง rush hour, เร่ง 4×) เวลารอเฉลี่ยของไฟตายตัวอยู่ที่ 61 วินาที ส่วนไฟปรับตามรถอยู่ที่ 56 วินาที ลดลงราว 8% ตัวเลขนี้เตือนเรื่องสำคัญไว้ว่า ตอนรถแน่น ตารางเวลาที่ปรับมาดีอยู่แล้วสู้ได้ค่อนข้างสูสี ส่วนที่ไฟปรับตามรถชนะขาดคือช่วงรถบาง และเหตุการณ์พิเศษอย่างรถบัส ขบวนจักรยาน และรถพยาบาล
ไฟตายตัววิ่งครบ 86 วินาทีทุกรอบ ไม่ว่ามีรถหรือไม่ ไฟปรับตามรถจะเขียวขั้นต่ำก่อน แล้วต่อเวลาตราบที่รถยังไหลมาอย่างต่อเนื่อง ตัดเมื่อรถขาดช่วง และข้ามเฟสที่ไม่มีใครรอ
ทำจริง: ติดตัวตรวจจับที่ทุกเลน แล้วเปลี่ยนตัวควบคุมเป็นโหมด actuated เริ่มจากแยกที่ปริมาณรถแกว่งตามช่วงเวลามากที่สุด
sim ให้น้ำหนักคิวตามจำนวนคนในรถ รถบัสเต็มคันจึงมีน้ำหนักมากกว่ารถเก๋ง แล้วรวมกับเวลาที่แต่ละคิวรอมา เพื่อไม่ให้ทางรองถูกลืม เป้าหมายจึงเป็นลด delay ต่อคน ไม่ใช่ delay ต่อคัน
ทำจริง: ใช้ข้อมูลผู้โดยสารจากบัส (เครื่องนับผู้โดยสารหรือค่าประมาณตามสาย) เป็นน้ำหนักในการตัดสินใจ และตั้งเป็นนโยบายให้ชัดว่าจะให้น้ำหนักบัส จักรยาน และคนเดินเท่าไร
ถ้านับตามคัน คิวรถเก๋งยาวกว่า 6 เท่า ถ้านับตามคน บัสคันเดียวอาจมีคนรอมากกว่า
เมื่อบัสเช็คอินที่ระยะประมาณ 110 เมตร สัญญาณมีสองทางเลือก ถ้าเขียวอยู่ก็ต่อให้ไม่เกิน 10 วินาที ถ้าแดงอยู่ก็ย่นเฟสอื่นให้เหลือขั้นต่ำเพื่อให้เขียวมาเร็วขึ้น และรับได้ครั้งละคัน ห่างกันอย่างน้อย 30 วินาที ป้ายจอดอยู่หลังสี่แยก บัสจึงไม่ต้องรอไฟแดงตอนขึ้นลงคน
ทำจริง: ติด AVL/GPS บนบัส ส่งคำขอ priority เข้าตัวควบคุม และวัดความสม่ำเสมอของเวลาเดินทางของบัส (ไม่ใช่แค่เวลาเฉลี่ย) พร้อมดูผลกระทบต่อทางรอง
จักรยานมักมาเป็นกลุ่ม (กลุ่มปั่น หรือขบวนที่ปล่อยมาจากแยกก่อนหน้า) ตัวตรวจจับในเลนจักรยานเห็นขบวน แล้วต่อเขียวให้จนคันสุดท้ายผ่าน ตารางเวลาตายตัวจะตัดขบวนที่วินาทีไหนก็ได้ที่ไฟเปลี่ยน คนปั่นครึ่งกลุ่มต้องหยุดอยู่กลางแยกหรือรอรอบใหม่
ทำจริง: ติดกล้องความร้อนหรือเรดาร์ในเลนจักรยานก่อนถึงแยก ตั้ง gap-out ให้สั้นกว่ารถยนต์ เพราะคนปั่นเรียงกันชิดกว่า และเก็บสถิติว่ามีกี่ครั้งที่ขบวนถูกตัด
sim รู้ล่วงหน้าราว 260 เมตร (แบบ GPS) แล้วปิดเฟสปัจจุบันอย่างปลอดภัย คนที่กำลังข้ามได้เวลาเคลียร์ครบเสมอ จากนั้นเหลือง แดงทั้งหมด แล้วเขียวให้ทางรถพยาบาลเร็วพอให้คิวหน้ารถพยาบาลเคลื่อนตัว ที่เหลือรอจนรถผ่าน แล้วค่อยเสิร์ฟคนที่รอนานที่สุด
ลองคำนวณดู: รถพยาบาลวิ่ง 50 กม./ชม. (≈ 13.9 m/s) ใช้เวลาราว 19 วินาทีต่อ 260 เมตร ขณะที่เวลาเคลียร์คนข้ามถนน 17 ม. ใน sim คือ 14 วินาที ระยะ 260 ม. จึงเป็นค่าที่ "เพิ่งพอ" ไม่ใช่ค่าเผื่อเยอะ ถนนกว้างกว่านี้หรือรถวิ่งเร็วกว่านี้ต้องแจ้งเตือนไกลขึ้น
ทำจริง: ตกลงกับหน่วยฉุกเฉินเรื่องอุปกรณ์และระยะแจ้งเตือน ทดสอบลำดับการเปลี่ยนไฟกับตัวควบคุมจริง และบันทึกทุกเหตุการณ์ preempt เพื่อตรวจสอบภายหลัง
ถ้าคนกำลังข้ามอยู่พอดี เวลาที่เหลือให้คิวหน้ารถพยาบาลระบายมีแค่ราว 5 วินาที
sim ให้สัญญาณข้ามถนนเมื่อมีคนรอ แม้กลางเฟสเขียวก็ให้ได้ถ้าเวลาเหลือพอ เวลาข้ามคำนวณให้คนที่เดินช้ากว่าค่าเฉลี่ย ทำให้คนเดินไม่ต้องรอครบรอบทุกครั้ง
ทำจริง: ปุ่มกดที่เข้าถึงได้ หรือกล้องตรวจจับคนรอที่ขอบทาง ตั้งเวลาข้ามจากความกว้างถนนหารด้วยความเร็วเดินที่ช้า และติดตามเวลารอของคนเดินเป็นตัวชี้วัดเดียวกับรถ
สิ่งที่ sim เรียกว่า "สัญญาณที่ดูสิ่งรอบตัว" ในของจริงคือชุดอุปกรณ์สี่กลุ่มที่ต่อกัน ประเด็นสำคัญคือตัวควบคุมที่สี่แยกต้องตัดสินใจเองได้ และต้องมีชั้นความปลอดภัยที่ระบบปรับเวลาแก้ไขไม่ได้
ลำดับนี้ไล่จากความเสี่ยงต่ำและได้ข้อมูลก่อน ไปหาสิ่งที่ต้องประสานหลายหน่วยงานทีหลัง
นับรถ คน จักรยาน และบัสแยกตามช่วงเวลา วัดเวลารอต่อคน คิวสูงสุด และเส้นทางที่รถฉุกเฉินใช้ แล้วสร้างแบบจำลองสี่แยกนั้นในโปรแกรมอย่าง SUMO ให้ตัวเลขตรงกับสนาม เพื่อเอาไว้ทดสอบแผนก่อนติดตั้งจริง
วัดผลด้วย: delay ต่อคน · คิวสูงสุด · จำนวนรอบที่คิวระบายไม่หมด
เลือกแยกที่ปริมาณรถแกว่งมาก ตั้งเขียวขั้นต่ำ ตัวต่อ และเพดานสูงสุดจากข้อมูลที่วัดมา เปิดแผน fixed เดิมเป็นแผนสำรองตลอด
วัดผลด้วย: เวลารอเฉลี่ยช่วงรถบาง · สัดส่วนเขียวที่ไม่มีรถใช้
ให้สัญญาณข้ามเมื่อมีคนรอจริง ตั้งเวลาข้ามตามคนที่เดินช้า และเพิ่มตัวตรวจจับขบวนจักรยานในเลนของมัน
วัดผลด้วย: เวลารอของคนเดิน · จำนวนครั้งที่ขบวนจักรยานถูกตัด
ติด AVL/GPS ตั้งเงื่อนไขครั้งละคัน ห่างกันอย่างน้อย 30 วินาที และเพดานต่อเขียว 10 วินาทีตามที่ sim ใช้เป็นจุดเริ่มต้น แล้วปรับตามผลกระทบต่อทางรอง
วัดผลด้วย: ความแปรปรวนของเวลาเดินทางบัส · เวลารอของทางรอง
ตกลงกับหน่วยรถพยาบาลและดับเพลิงเรื่องอุปกรณ์ ระยะแจ้งเตือนที่พอกับความกว้างของแยก และทดสอบลำดับเปลี่ยนไฟให้เคลียร์คนข้ามครบทุกครั้ง
วัดผลด้วย: เวลาที่รถฉุกเฉินเสียที่แยก · จำนวนเหตุการณ์ที่ตรวจสอบย้อนหลังได้
เมื่อหลายแยกทำงานได้ดีแล้ว จึงประสานกันตามแนวถนนหลัก ซึ่งเป็นส่วนที่ sim สี่แยกเดียวแสดงไม่ได้
วัดผลด้วย: เวลาเดินทางตลอดเส้นทาง · จำนวนครั้งที่หยุดต่อกิโลเมตร
sim ต้นฉบับเองก็ระบุว่าเป็นตัวควบคุมแบบ actuated ที่ย่อไว้ ก่อนเอาไปใช้จริงควรรู้ว่าอะไรถูกทำให้ง่ายกว่าความเป็นจริง
ในถนนจริงรถมาเป็นก้อนจากแยกก่อนหน้า การประสานหลายแยกอาจให้ผลมากกว่าการปรับแยกเดียว
sim ใช้การมาถึงแบบ Poisson ส่วนจริงมีชั่วโมงเร่งด่วน เหตุการณ์ และเวลาเลิกเรียนที่ทำให้แบบแผนเปลี่ยนไป
ของจริงมีเซนเซอร์เสีย ฝน แดดสะท้อน และรถจอดทับห่วง จึงต้องมีแผนสำรอง fixed-time และแจ้งเตือนเมื่ออุปกรณ์ผิดปกติ
รถใน sim ขับตามโมเดล IDM เหมือนกันหมด ของจริงมีรถฝ่าไฟและมอเตอร์ไซค์แทรกช่อง ต้องปรับพารามิเตอร์ให้ตรงกับสนาม
ในสภาพจราจรหนาแน่นช่วงชั่วโมงเร่งด่วน เวลารอลดลงราว 8% ประโยชน์ที่เห็นชัดกว่าอยู่ที่ช่วงรถบางและเหตุการณ์พิเศษ จึงไม่ควรตั้งความคาดหวังไว้สูงเกินตัวเลขนี้
น้ำหนักที่ให้คน บัส จักรยาน และรถส่วนตัวเป็นการเลือกค่านิยมของเมือง ไม่ใช่ค่าที่วิศวกรหาได้จากสูตรอย่างเดียว ควรตกลงและเปิดเผยให้ชัด