جستجوی محلی تکراری (Iterated Local Search) در بهینه‌سازی

مدرس: مسعود کاویانی

جستجوی محلی یا همان Local Search یکی از ساده‌ترین الگوریتم‌های هوش‌مصنوعی در حوزه‌ی بهینه‌سازی است. در درس فعلی می‌خواهیم یک بهینه‌سازیِ ارائه شده برای این الگوریتم به اسم جستجوی محلیِ تکراری را مورد بررسی قرار دهیم تا بتوانیم یکی از نقاط ضعف الگوریتم جستجوی محلی را حذف کنیم.

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

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

جستجوی محلی مشکلِ گیرکردن در بهینه‌های محلی را دارد. الگوریتم باید راهی پیدا کند تا بتواند از بهینه‌ی محلی فرار کند. برای همین، الگوریتمِ جستجوی محلی تکراری یا همان Iterated Local Search به وجود آمد. برای درک این الگوریتم شکل زیر را نگاه کنید:

همان‌طور که مشخص است هنگامی که الگوریتم در یک بهینه‌ی محلی گیر کرده است (محل شماره‌ی ۱)، سعی در فرار از آن دارد. به این فرار در اصطلاحْ آشفتگی (Perturbation) می‌گویند. در واقع الگوریتم سعی می‌کند یک همسایه با کمی اختلاف (همسایه‌ای که نزدیک نباشد) پیدا کند (در شکلِ بالا از نقطه‌ی ۱ به نقطه‌ی ۲ فرار کرده‌است) و بعد از آن جستجوی محلی را در نزدیکیِ نقطه‌ی ۲ ادامه می‌دهد تا به یک حالت بهینه‌تر برسد. پس این همسایه‌ی غیر نزدیک یک فرار از نقطه‌ی فعلی (نقطه‌ی شماره‌ی ۱ در شکل بالا) به نقطه‌ای دیگر (نقطه‌ی شماره‌ی ۲ در شکل بالا) یک آشفتگی در الگوریتم است. البته ممکن است آشفتگی همیشه به بهبود منجر نشود که در این صورت الگوریتم بازگشت را انجام داده و به نقطه‌ی فعلی برمی‌گردد.

توجه داشته‌باشید که الگوریتم جستجوی محلی تکراری، با فرارهای متعدد، می‌تواند یک بخشِ دیگر از فضای حالت را اکتشاف کرده و در تله‌ی بهینه‌های محلی گیر نکند. اگر آن حالت جدید بهتر از حالت فعلی باشد، می‌توان حالت جدید را به عنوانِ نقطه‌ی مطلوب‌تر در نظر گرفت.

ترتیب پیشنهادی خواندن درس‌های این مجموعه به صورت زیر است:
منابع این بحث و اطلاعات بیشتر

» وب‌سایت ResearchGate

» مقاله وب‌سایت sci2s.ugr.es

در صورت تمایل به یادگیری بیشتر، منابع بالا در نظر گرفته شده است. می توانید با خواندن این منابع، به یادگیری خود در این زمینه عمق ببخشید

4 دیدگاه دربارهٔ «جستجوی محلی تکراری (Iterated Local Search) در بهینه‌سازی»

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *