بازگشت به یادداشت‌ها
علیرضا سرودی

جابه‌جایی پویای آمبولانس: کجا منتظر بمانیم تا زودتر برسیم؟

آشنایی با مسئله مکان‌یابی و جابه‌جایی پویای آمبولانس در خدمات اورژانس پزشکی، و مدل‌سازی آن با ابزارهای متن‌باز پایتون.

جابه‌جایی پویای آمبولانس: کجا منتظر بمانیم تا زودتر برسیم؟

ساعت سه بعدازظهر است و در یک شهر متوسط، همه‌ی آمبولانس‌های در دسترس یا سر مأموریت‌اند. یا در ایستگاه‌های ثابت خود پارک شده‌اند. ناگهان تماسی برای ایست قلبی در محله‌ای می‌رسد که نزدیک‌ترین ایستگاه آمبولانسش، به‌خاطر یک تصادف در همان لحظه، خالی از خودرو شده. این دقیقاً همان لحظه‌ای است که مدیران عملیاتی اورژانس هر روز با آن دست‌وپنجه نرم می‌کنند. آن‌ها باید تصمیم بگیرند چند آمبولانس در کجا مستقر شود. باید تصمیم بگیرند وقتی وضعیت پوشش شهر لحظه‌به‌لحظه به‌خاطر اعزام‌های در جریان تغییر می‌کند، بقیه آمبولانس‌های آزاد به کدام ایستگاه‌ها جابه‌جا شوند. هدف این جابه‌جایی، حفظ پوشش کلی شهر است. این مسئله در ادبیات تحقیق در عملیات، مسئله مکان‌یابی و جابه‌جایی پویای آمبولانس (Ambulance Location and Dynamic Relocation Problem) نام دارد. این حوزه یکی از کاربردهای کمتر گفته‌شده اما بسیار حیاتی بهینه‌سازی در حوزه سلامت است.

نکته‌ی ظریف این مسئله این است که مکان‌یابی آمبولانس، برخلاف مکان‌یابی یک فروشگاه یا انبار، یک تصمیم ایستا و بلندمدت نیست. این مسئله دو لایه دارد. لایه اول تصمیم استراتژیک درباره تعداد و موقعیت ایستگاه‌های ثابت است. برای آشنایی بیشتر با این لایه استراتژیک، یادداشتی جداگانه در مورد مکان‌یابی آمبولانس با مدل MCLP نوشته شده است. لایه دوم تصمیم عملیاتی و پویاست. در هر لحظه از شبانه‌روز، با توجه به اینکه کدام آمبولانس‌ها مشغول‌اند، باید تصمیم گرفت بقیه کجا «منتظر» بمانند. هدف این است که احتمال پوشش به‌موقع کل شهر بیشینه شود.

همین لایه‌ی دوم است که مسئله را از یک مکان‌یابی ساده به یک مسئله بهینه‌سازی تصادفی و پویا تبدیل می‌کند. دلیل این امر آن است که وضعیت اشغال آمبولانس‌ها دائماً در حال تغییر است. نمی‌توان فرض کرد همه آمبولانس‌ها همیشه در دسترس‌اند.

اهمیت این موضوع در دنیای واقعی

در بسیاری از پروتکل‌های اورژانس پزشکی دنیا، معیار اصلی کیفیت خدمت زمان پاسخ است. مثلاً هدف رایج این است که آمبولانس ظرف ۸ تا ۱۰ دقیقه به محل برسد. این پاسخ‌گویی باید در فلان درصد از تماس‌های اورژانسی، معمولاً حدود ۹۰ درصد، رخ دهد. برای موارد حیاتی مثل ایست قلبی، هر دقیقه تأخیر در رسیدن، به‌طور محسوسی احتمال بقای بیمار را کاهش می‌دهد. مطالعات پزشکی نشان می‌دهند این احتمال در دقایق اول به سرعت افت می‌کند. شرکت‌ها و سازمان‌هایی مثل Falck خدمات آمبولانس را در چند کشور اروپایی و آمریکای لاتین به‌صورت قراردادی اداره می‌کنند. این شرکت‌ها دقیقاً با همین چالش روزانه روبه‌رو هستند.

چالش این است که چطور با تعداد محدودی آمبولانس، پوشش زمانی قابل قبولی برای کل منطقه تحت پوشش تضمین کنند. این کار دشوار است، چون تقاضا نه‌تنها در طول شبانه‌روز (اوج ترافیک، شب‌های آخر هفته) بلکه به‌خاطر رویدادهای غیرمنتظره هم نوسان دارد. یک سیستم مکان‌یابی و جابه‌جایی هوشمند می‌تواند بدون افزودن حتی یک آمبولانس جدید، درصد پوشش به‌موقع را چند واحد درصد بالا ببرد. این بهبود مستقیماً به معنای جان‌های بیشتری است که نجات پیدا می‌کنند. از منظر اقتصادی هم، خرید و نگهداری هر آمبولانس و عضو کادر آن هزینه بالایی دارد. به همین دلیل، بهینه‌سازی نحوه استفاده از ناوگان موجود، به‌مراتب مقرون‌به‌صرفه‌تر از افزایش تعداد خودروهاست.

دو پایگاه آمبولانس با فلش‌های خط‌چین که جابه‌جایی پویا بین آن‌ها را نشان می‌دهند

فرمول‌بندی ریاضی مسئله

نقطه شروع کلاسیک برای این مسئله، مدل پوشش مورد انتظار بیشینه (Maximum Expected Covering Location Problem یا به‌اختصار MEXCLP) است. فرض کنید مجموعه‌ای از نقاط تقاضا j∈Jj \in J داریم که هرکدام نرخ تماس djd_j دارند. همچنین مجموعه‌ای از ایستگاه‌های کاندید i∈Ii \in I داریم که می‌توان در آن‌ها آمبولانس مستقر کرد. فرض کنید pp آمبولانس در کل شهر داریم و هر آمبولانس به‌طور مستقل با احتمال qq مشغول انجام مأموریت است. نقطه تقاضای jj توسط آمبولانس‌هایی پوشش داده می‌شود که در بازه زمانی قابل قبول به آن می‌رسند. احتمال اینکه دقیقاً kk آمبولانس از این آمبولانس‌ها در دسترس باشند، از توزیع دوجمله‌ای تقریب زده می‌شود.

متغیر تصمیم xix_i تعداد آمبولانس‌های مستقر در ایستگاه ii است. متغیر باینری yjky_{jk} نشان می‌دهد که آیا نقطه تقاضای jj توسط حداقل kk آمبولانس پوشش داده می‌شود یا نه:

max⁡∑j∈Jdj∑k=1p(1−q) q k−1 yjk\max \quad \sum_{j \in J} d_j \sum_{k=1}^{p} (1-q)\, q^{\,k-1} \, y_{jk} ∑i∈Njxi≥∑k=1pyjk∀j∈J\sum_{i \in N_j} x_i \ge \sum_{k=1}^{p} y_{jk} \qquad \forall j \in J ∑i∈Ixi=p,yj,1≥yj,2≥⋯≥yj,p,xi,yjk∈{0,1,2,… }\sum_{i \in I} x_i = p, \qquad y_{j,1} \ge y_{j,2} \ge \dots \ge y_{j,p}, \qquad x_i, y_{jk} \in \{0,1,2,\dots\}

NjN_j مجموعه ایستگاه‌های کاندیدی است که فاصله یا زمان سفرشان تا نقطه تقاضای jj کوتاه باشد. منظور از کوتاه، کمتر از آستانه پاسخ مطلوب است؛ مثلاً ۸ دقیقه. این مدل، لایه‌ی استراتژیک مسئله را حل می‌کند؛ یعنی تصمیم می‌گیرد چند آمبولانس در کدام ایستگاه‌ها مستقر شوند.

لایه‌ی پویا و عملیاتی این است که با اعزام هر آمبولانس، بقیه باید فوراً به کدام ایستگاه خالی جابه‌جا شوند. هدف این جابه‌جایی، حفظ پوشش لحظه‌ای است. این تصمیم معمولاً با یک مدل بازآرایی پویا حل می‌شود. در هر رویداد اعزام یا بازگشت آمبولانس، این مدل دوباره یک زیرمسئله تخصیص حل می‌کند.

هدف آن است که با کمترین جابه‌جایی، بیشترین پوشش لحظه‌ای بازیابی شود. این رویکرد در ادبیات Dynamic Ambulance Management یا Ambulance Redeployment نام دارد.

ظرفیت کار آکادمیک و پژوهشی

این حوزه یکی از پرثمرترین تقاطع‌های تحقیق در عملیات و سلامت عمومی است و همچنان جای کار پژوهشی فراوان دارد. یک مسیر فعال، توسعه مدل‌های تصادفی چندمرحله‌ای (Multi-period Stochastic Optimization) است. در این مدل‌ها، الگوی تقاضا بر اساس ساعت روز، روز هفته و حتی رویدادهای شهری (کنسرت، مسابقه ورزشی) پیش‌بینی می‌شود. سپس این پیش‌بینی در تصمیم جابه‌جایی لحاظ می‌شود.

مسیر دیگر، استفاده از یادگیری تقویتی (Reinforcement Learning) برای یادگیری سیاست بازآرایی پویا است. این روش به‌جای حل مکرر یک مدل بهینه‌سازی در هر رویداد استفاده می‌شود. این رویکرد در چند سال اخیر توجه زیادی در مقالات جذب کرده است. دلیل این توجه آن است که می‌تواند تصمیم را در کسری از ثانیه بدهد.

ترکیب این مسئله با عدم‌قطعیت در زمان سفر (به‌خاطر ترافیک)، با استفاده از بهینه‌سازی مقاوم (Robust Optimization)، یکی از مسیرهای باز است. همچنین گسترش مدل به ناوگان ناهمگن (آمبولانس‌های حیاتی در برابر انتقال ساده بیمار) نیز از مسیرهای باز است. این مسیرها هنوز به بلوغ کامل نرسیده‌اند.

برای دانشجویانی که به دنبال موضوع پایان‌نامه یا مقاله با تأثیر اجتماعی مستقیم و قابل اندازه‌گیری هستند، این حوزه گزینه مناسبی است. دلیل این امر آن است که داده‌های تماس اورژانس در بسیاری از شهرها در دسترس پژوهشگران است. این داده‌ها معمولاً به‌صورت عمومی یا از طریق همکاری با سازمان‌های محلی قابل دسترسی‌اند.

پیاده‌سازی با پایتون

خبر خوب این است که برای مدل‌سازی و حل نسخه استراتژیک این مسئله، یعنی مدل MEXCLP، نیازی به نرم‌افزار تجاری گران‌قیمت نیست. این مدل یک برنامه‌ریزی خطی عدد صحیح با ساختار نسبتاً ساده است. این مدل با PuLP یا Pyomo قابل نوشتن است. سالورهای متن‌باز مثل CBC یا HiGHS این مدل را به‌سرعت حل می‌کنند. حتی برای شهرهایی با چند صد نقطه تقاضا و چند ده ایستگاه کاندید، این حل در چند ثانیه انجام می‌شود.

برای لایه‌ی پویا و عملیاتی، یعنی تصمیم لحظه‌ای بازآرایی آمبولانس‌ها پس از هر اعزام، ماژول CP-SAT در OR-Tools گزینه‌ی مناسبی است. این ماژول می‌تواند زیرمسئله تخصیص آمبولانس آزاد به ایستگاه‌های خالی را با قیدهای زمان جابه‌جایی حل کند.

این کار با در نظر گرفتن اولویت پوشش و در کسری از ثانیه انجام می‌شود. این فرایند در یک حلقه شبیه‌سازی گسسته-رویداد (Discrete-Event Simulation) که با SimPy نوشته می‌شود، تکرار می‌شود.

داده‌های ورودی این مدل‌ها معمولاً شامل مختصات نقاط تقاضا، نرخ تماس هر منطقه، فهرست ایستگاه‌های کاندید و ماتریس زمان سفر بین آن‌هاست. می‌توان این داده‌ها را از یک فایل اکسل یا CSV ساده خواند. یعنی یک سازمان اورژانس منطقه‌ای، بدون بودجه‌ای برای نرم‌افزارهای تخصصی GIS و بهینه‌سازی تجاری، می‌تواند نسخه اولیه‌ای از این سیستم بسازد. این سازمان می‌تواند این نسخه را با ابزارهای متن‌باز پایتون بسازد و به‌تدریج توسعه دهد.

سوالات متداول

آیا این مدل فقط برای آمبولانس کاربرد دارد؟

خیر. همین چارچوب پوشش پویا با تغییرات جزئی برای مکان‌یابی و جابه‌جایی خودروهای امداد جاده‌ای و تیم‌های آتش‌نشانی هم قابل استفاده است. حتی پهپادهای امدادی پزشکی که برای رساندن دفیبریلاتور یا دارو استفاده می‌شوند، از همین منطق بهره می‌برند.

برای یادگیری مدل‌سازی این نوع مسائل بهینه‌سازی در حوزه سلامت از کجا شروع کنم؟

دوره بهینه‌سازی و تصمیم‌گیری سیستم سلامت با پایتون روی این‌جور مسائل تخصیص و زمان‌بندی منابع در حوزه سلامت با OR-Tools و CP-SAT تمرکز دارد. این دوره نقطه شروع مناسبی برای این حوزه است.

اگر بخواهم چنین مدلی را برای سازمان اورژانس یا شهر خودمان پیاده‌سازی کنم چه کار باید بکنم؟

می‌توانید از طریق صفحه مشاوره داده‌ها و محدودیت‌های عملیاتی واقعی‌تان را در میان بگذارید. این محدودیت‌ها شامل تعداد آمبولانس، ایستگاه‌های موجود و الگوی تماس‌ها می‌شود. سپس مدل متناسب با شرایط شما طراحی می‌شود.


مشاوره و ارتباط با ما

برای مشاوره و ثبت‌نام در دوره‌ها و دریافت پروژه‌ها با آیدی @pypyid در تلگرام در تماس باشید.

ارتباط در تلگرام

دوره‌های آموزشی مرتبط

مقالات و یادداشت‌های مرتبط

پروژه‌های مرتبط