เคยไหมคะ จัดเวรออกไปเสร็จแล้ว มีคนหลังไมค์มาถามว่า ทำไมจัดถี่จัดซ้ำ จัดไม่เป็นธรรมเลย ทำไมไม่เอาเวรนี้ไปตรงนั้น เวรนั้นย้ายไปโน้น
ทั้งที่เราก็ไตร่ตรองมาดีที่สุดแล้ว ทำไมยังมีคำตอบที่ดีกว่าหลุดรอดไปได้
การจัดเวรพยาบาลเป็นเรื่องที่ “ซับซ้อน” กว่าที่เราเข้าใจ และเชื่อไหมคะ ว่าถึงขั้นมีการแข่งขันจัดเวรพยาบาลระดับโลกมาแล้วด้วย!
วันนี้เรามาอ่านเรื่องสนุกเกี่ยวกับการจัดเวร ทั้งเรื่องการจัดเวรหลุดๆ ที่เหมือนจะเป็นเรื่องของสายงานเราแต่ก็ไม่เชิง
—
การจัดเวรพยาบาลยากไหม?
พี่พยาบาลที่ผู้เขียนเคารพ เคยร้องไห้เพราะผู้บริหารถามว่า “การจัดเวรนี่มันยากตรงไหน ทำไมเรื่องแค่นี้ทำให้ดีไม่ได้”
นำมาสู่คำถามที่ดูสามัญแต่คาใจ ว่าการจัดเวรมันยากจริงๆ หรือเพราะไม่เก่งเองกันแน่
หากเราลองเสิร์ช “Nurse Rostering Problem” หรือ “Nurse Scheduling Problem” ซึ่งแปลตรงตัวว่า “ปัญหาการจัดเวรพยาบาล” เราจะพบงานวิจัยจำนวนมหาศาล
ที่ไม่ได้ทำโดยพยาบาล!
และพยาบาลอาจจะอ่านไม่เข้าใจ!
เกิดอะไรขึ้น?
ปัญหาการจัดเวรพยาบาล เป็นปัญหาการจัดตารางงานรูปแบบหนึ่ง ที่ประกอบด้วย
1.การแจกจ่ายเจ้าหน้าที่ลงในตารางงานอย่างเหมาะสม โดยแต่ละคนมีความสามารถต่างกัน เข้าได้กับตำแหน่งและห้วงเวลาต่างกัน
2.มีข้อจำกัดที่จำเป็นต้องทำให้ได้ (hard constraints) เช่น ห้ามควงเวร 24 ชั่วโมง ต้องมีคนทำงานทุกเวร ฯลฯ ในที่นี้มักเป็นข้อกำหนดของรพ. และข้อจำกัดที่หากทำได้ก็ดีอีกชุดหนึ่ง (soft constraints) เช่น การขอวันลา พยาบาลคนนี้ไม่ชอบคนนี้ขอไม่ขึ้นตรงกัน ฯลฯ เท่าที่เห็นมักเป็นเรื่องส่วนตัว
(จะอธิบายเพิ่มในหัวข้อถัดไป)
จะเห็นได้ว่า ยากทั้งการจัดแจกจ่าย และยากทั้งการจัดการข้อจำกัด
การจัดตารางงานที่ยากระดับนี้ แถมหมุนวนตลอด 24 ชั่วโมง แทบไม่พบในระบบงานอื่น แม้มีก็ไม่ซับซ้อนเท่า มีเพียงพยาบาลเท่านั้นที่ใช้
ทำให้ “Nurse Rostering Problem (NRP)” กลายเป็นปัญหาสุดท้าทาย ที่นักวิจัยโดยเฉพาะในสายคอมพิวเตอร์ให้ความสนใจ
และ NRP ที่ว่านี้ ก็ถูกสายคอมพิวเตอร์จัดให้เป็นปัญหาในหัวข้อ “NP - complete”
ซึ่งแปลว่า
“ปัญหาระดับยาก ที่ไม่สามารถหาคำตอบที่ดีที่สุดเพียงหนึ่งเดียวได้ใน polynomial time แต่อาจสามารถหาคำตอบที่พอจะใช้ได้ชุดหนึ่งในกรอบเวลาหนึ่งเท่านั้น”
แค่ฟังคำแปลยังงงมาก! อะไรกันเนี่ย!!
—
ทำไมการจัดเวรพยาบาล “Nurse Rostering Problem (NRP)” จึงยาก
NRP เป็นปัญหาทางคณิตศาสตร์ในหัวข้อ NP-complete
โครงสร้างของปัญหาคือ การจัดตารางเวรพยาบาล โดยต้อง “achieve hard constraints” ให้ได้ และพยายามจัดการ “soft constraints” ให้มากที่สุด
นั่นคือภายใต้ข้อจำกัดต่างๆ อาจมีตารางเวรหลากหลายรูปแบบที่เป็นไปได้ โดยแต่ละแบบ จะต้องทำตาม hard constraints ทุกข้อให้ได้ แต่อาจทำ soft constraints ได้มากน้อยแตกต่างกันไป
ดังนั้นการหาตารางเวรที่ “ดีที่สุด” ย่อมเกิดจากการจัดตารางเวรที่เป็นไปได้ให้ครบทุกแบบ แล้วเข้าไปดูว่าแบบไหนดีที่สุดกัน
หากใครเรียนเลขม.ปลายมา ย่อมเดาได้ว่าความน่าจะเป็นจากตัวแปรหลายสิบตัว อาจนำไปสู่คำตอบหลายล้านแบบได้
อย่าว่าแต่จัดมือด้วยหัวหน้าพยาบาลจะทำไม่ได้ แม้แต่คอมพิวเตอร์เอง ยังอาจไม่สามารถสร้างตารางเวรนับล้านแบบให้ครบ แล้วเข้าไปหาที่ดีที่สุดออกมาได้
เรื่องนี้ในภาษาคอมพิวเตอร์เรียกว่า “ไม่สามารถหาคำตอบได้ด้วยคอมพิวเตอร์ในยุคนี้ ในเวลาระดับ polynomial time” นั่นเองค่ะ
พูดภาษาชาวบ้าน ถ้าจะหาตารางเวรที่ไร้ที่ติ เราอาจต้องตายแล้วเกิดใหม่อีกสิบชาติ รอตารางออกชัวกัปป์ชั่วกัลป์ หรือถ้าไม่อยากรอนานก็ซื้อควอนตัมคอมพิวเตอร์มาใช้ ถึงจะจัดได้เพอร์เฟคต์ค่ะ
—
แล้วจะแก้ปัญหาการจัดเวรพยาบาลอย่างไร
อย่างไรก็ตาม แม้เราจะไม่สามารถหาตารางเวรที่ดีที่สุดออกมาได้ในชีวิตจริง แต่เราสามารถผลิตตารางเวรจำนวนหนึ่ง ที่อาจไม่ดีที่สุด แต่ดีพอสมควรออกมาได้
คิดตามง่ายๆ ทุกๆเดือนที่เราจัดตารางเวรด้วยมือ เราก็ออกตารางเวรที่เหมาะสมตามข้อบังคับ (achieve hard constraints) และจัดวันหยุดวันออฟให้น้องพยาบาลได้บางส่วน (soft constraints) นั่นคือดีพอสมควร แต่แน่นอนหากคิดด้วยวิธีแบบโปรแกรมมิ่ง ย่อมสามารถดีขึ้นได้
ที่เบลเยียมเคยมีการจัดงาน International Nurse Rostering Competition (INRP) หรือการแข่งขันจัดตารางเวรพยาบาลขึ้นค่ะ
ผู้เข้าแข่งมาจากทั่วโลก แต่แทนที่จะเป็นหัวหน้าพยาบาลอาวุโส ดันกลายเป็นโปรแกรมเมอร์ซะงั้น!
พวกเขาทำการแข่งขัน เพื่อหา Algorithm (กระบวนการ ในที่นี้หมายลำดับคำสั่งที่โปรแกรมเมอร์ป้อนให้คอมพิวเตอร์) ที่สามารถผลิตตารางเวรออกมาได้ดีที่สุดเร็วที่สุดในหมู่ผู้เข้าแข่งขัน
อ่านถึงแค่นี้ก็รู้สึกไม่น่าเชื่อแล้วค่ะ ว่าตารางเวรที่เราจัดๆกัน มันจะสามารถเป็นโจทย์ให้โปรแกรมเมอร์ระดับโลกมาแข่งกันได้ แถมถ้าลงลึกอีกหน่อย ในงานนั้น(รวมถึงงานวิจัยที่จะออกมาต่อจากนั้น) มีทั้ง Algorithm ในสาย Optimization และ Heuristic approach
ในฐานะสายงานสาธารณสุข ศัพท์พวกนี้เราคงฟังไม่เข้าใจ แต่ขอให้ทราบว่าทั้งยากทั้งหลากหลาย จึงไม่น่าแปลกใจที่ Nurse Rostering Problem จะอยู่ในความสนใจ และกลายเป็นตำนานของปัญหาสาย scheduling ทั้งหมด
—
ต้องขอบคุณงานวิจัยสายคอมพิวเตอร์ ในปัจจุบันพวกเราในสายสาธารณสุข จึงเริ่มมีโปรแกรมจัดตารางเวรอย่างเหมาะสม ออกมาใช้งานโดยมีรากฐานจาก Algorithm ต่างๆที่พวกเขาค้นคว้าวิจัยขึ้น
และเมื่อมองย้อนกลับไปยังคำถามต้นทาง ว่าการจัดตารางเวรนั้นมันยากหรือมันง่าย คำตอบคงชัดเจนในใจ
ว่าไม่ใช่แค่ยาก แต่ยากมากมากมากมากมาก เลยทีเดียว
Comments