الگوریتم آسانسور؟!
سوالی که ذهن ما را مواقعی که مدت زیادی منتظر رسیدن آسانسور هستیم درگیر میکند این است که پس از زدن دکمه آسانسور، بالاخره کِی آسانسور به درخواست ما توجه میکند و ما را سوار خواهد کرد. و پس از سرآمدن انتظار و سوار شدن سوال بعدی این خواهد بود که آیا به سمت طبقه مورد نظر ما حرکت میکند یا در جهت برعکس آن!
ما با فشردن هر دکمه، آسانسورها را با چالشی محاسباتی مواجه میکنیم. سیستم آسانسور باید تصمیم بگیرد که کدام آسانسور را چه زمانی برای ما بفرستد. باید انتخاب کند که آیا از طبقه پنجم بالاتر برود تا افراد منتظر در طبقه هفتم را سوار کند یا به طبقه همکف جایی که ما هستیم بیاید. طبیعتاً عادلانه این است که آسانسور در محاسبات خود، اینکه چه کسی بیشتر منتظر بوده را در نظر بگیرد. تصمیم بگیرد کدام یک از مسیرهای بسیاری که وجود دارد برای همه افراد بهتر و کارآمدترین انتخاب است. مدیریت ترافیک آسانسور شبیه حل یک مسئله پیچیده ریاضی است و هنگامی که مراحل حل را آن را ببینیم، احتمالا مهندسانی که آسانسور را طراحی کردهاند را تحسین خواهیم کرد.
مسیریابی آسانسور قبلا به این پیچیدگی نبود. اولین آسانسورهای برقی توسط اپراتورهای انسانی کنترل میشد. یک نیروی خدماتی ساختمان همیشه داخل آسانسور بود و آن را با یک اهرم بالا و پایین میبرد و هر جا که او متوجه میشد که کسی منتظر آسانسور ایستاده متوقف میشد. اما کمی بعد ثابت شد که استفاده از افراد دست و پا چلفتی باعث مشکلات خطرناکی میشود، ضمن اینکه نیروی انسانی هزینههایی از قبیل هزینه حقوق، بیمه و مزایا را بر دوش ساختمان میگذارد. پس در دهه 1950 میلادی، رانندههای آسانسور شغل خود را از دست دادند!
برای اینکه آسانسورها افسار هدایت خودشان را در دست بگیرند، مهندسان مجبور بودند، به آسانسور بفهمانند که چه زمانی به کدام طبقه برود. سادهترین روش این بود که آسانسورها در فواصل زمانبندی شده بین طبقات از پیش تعیین شده رفت و برگشت کنند. شبیه مترو یا اتوبوس، یعنی شما منتظر آسانسور ساعت 9 صبح به طبقه 3 باشید بعد هم از طبقه 3 یک کورس دیگر سوار شوید برای مسیر بعدی! البته که این روش به شدت ناکارآمد و غیربهینه بود. در ساعات شلوغ روز، آسانسور وقت افرادی که سوار هستند را تا پایان زمان برنامهریزی شدهی توقف در آن طبقه را تلف میکند و از طرفی دیگر در زمانهای خلوت ساختمان، سفرها و توقفهای خالی و مسخره انجام میداد.
تا سال 1965 میلادی، مهندسان آسانسور روی مدلی که همهی ما با آن آشنا هستیم، کار میکردند. یعنی افراد دکمههایی را برای فراخواندن آسانسور فشار میدهند و آسانسورها به این درخواستها پاسخ میدهند. اما این روش یک باگ اساسی دارد و آن هم این است که با افزایش تقاضای آسانسور در طبقههای مختلف ساختمان، چگونه آسانسور تصمیم میگیرد که کِی به کجا برود؟
بهترین سیستم برنامهریزی آسانسور چیست؟ آیا اولویت با کسی است که بیشتر از همه وقتش در انتظار آسانسور تلف شده است؟ یا با کسی که در نزدیک طبقه به آسانسور منتظر آن است؟ یکی وقت مردم را کمتر هدر میدهد و در آن یکی آسانسور کمتر کار میکند و طبیعتا کمتر انرژی مصرف میکند و کمتر مستهلک میشود، باید میان این دو انتخاب به یک تعادل رسید.
مهندسان صنعت آسانسور با تمام این سوالات دست و پنجه نرم میکنند و هیچ یک از آنها به این سادگی که به نظر میآید، نیستند. واضح است که آسانسور باید سعی کند زمان سفر را کاهش دهد. اما چگونه باید برنامهریزی و اولویتبندی کند؟ اگر شما به جای 20 ثانیه، یک دقیقه برای آسانسور صبر کنید، چقدر برایتان اذیت کننده است، همان 3 برابر یا نه 6 برابر یا 9 برابر یا…؟
میبینید که وقتی پای انسان به وسط میآید، حتی سادهترین مسائل نیز سخت میشوند.
برخلاف تصور، گاهی اوقات، بهتر است که مدتی که فرد در آسانسور است طولانیتر شود. دو سناریو را تصور کنید، در سناریو اول رسیدن آسانسور شما 10 ثانیه و سپس رسیدن به مقصد یک دقیقه طول میکشد و در سناریوی دوم هر کدام 30 ثانیه طول بکشد. انتظار کشیدن برای رسیدن آسانسور برای بسیاری از افراد به قدری اذیت کننده است که سناریوی اول را ترجیح میدهند، حتی به قیمت اینکه در مجموع 10 ثانیه دیرتر به مقصدشان برسند. به همین خاطر یک شاخص جالب برای برخی از آسانسورها تعریف میشود «شاخص آزار» در این شاخص زمان انتظار به تنهایی ملاک تصمیمگیری آسانسور نیست بلکه رایانهی آسانسور مقدار اذیت شدن مسافر در هر نوع تاخیر را ارزیابی میکند و مطابق این شاخص که قابل تنظیم است، برنامهریزی سفرهای خود را بهینهسازی میکنند.
باز هم چیزهایی هستند که کار آسانسور را سخت میکنند، آسانسورها محدودیتهای زیادی دارند. محدودیتهایی نظیر سرعت و گنجایش، آسانسور تنها یک یا دو ثانیه فرصت دارد تا برای حرکت بعدی خود تصمیم بگیرد. ضمنا نباید رفتاری داشته باشد که افراد را عصبانی کند، مثلا نباید طبقه مورد نظر کسی را بدون توجه رد کند. البته مواقعی وجود دارد که آسانسور با حداکثر گنجایش مسافر در حال حرکت است و شخصی در طبقهای که مقصد آسانسور نیست دکمه درخواست آسانسور را فشار میدهد. در این حالت راهکار صحیح این است که آسانسور درخواست آن شخص را موقتا نادیده بگیرد تا ظرفیت آن قدری خالی شود. یک سیستم خوب همه این اهداف و مسائل را در نظر میگیرد.
قسمت دوم این مقاله را اینجا بخوانید.