الگوریتم جستجوی شکار یا HUS
الگوریتم جستجوی شکار یا HUS یک الگوریتم بهینهسازی جدید است که با الهام گرفتن از شکار گروهی حیوانات وحشی مانند شیر، گرگ و… طراحی شده است. اگرچه شکارچیانی که معرفی کردیم دارای شیوههای شکار متفاوتی هستند؛ ولی همگی آنها از این جهت مشترک هستند که در یک گروه به دنبال طعمه خود هستند. این شکارچیان در ادامه طعمه خود را محاصره کرده و کم کم حلقه محاصره خود را تنگتر میکنند تا اینکه در نهایت آن را به دام بیندازند. علاوه بر این هریک از اعضای گروه بر اساس موقعیت خود و سایر اعضا موضع خود را اصلاح میکنند. در صورتی که طعمه بتواند از این حلقه محاصره فرار کند، شکارچیان گروه دوباره خود را سازماندهی کرده و تلاش میکنند تا دوباره آن را محاصره کنند.
امروزه مسائل بهینهسازی زیادی وجود دارند که با استفاده از این الگوریتم جستجو قابل حل شدهاند و راههای جدیدی برای افزایش سرعت پاسخدهی این مسائل مطرح شده است. در ادامه بیشتر با این الگوریتم و نحوه اجرای آن آشنا خواهید شد.
انجام پروژه متلب با بهترین هزینه
آشنایی با الگوریتم جستجوی شکار یا HUS
پیش از آنکه بخواهیم درباره الگوریتم جستجوی شکار یا HUS صحبت کرده و اطلاعاتی را در اختیار شما قرار دهیم، اجازه دهید تا با تکنیکها و روشهای کلاسیک برای حل مسائل بهینهسازی بیشتر آشنا شویم. این روشها اغلب در حل مسائل بهینهسازی که در دنیای واقعی وجود دارند با مشکلات زیادی روبهرو میشوند. برخلاف این روشها که از تکنیکهای کلاسیک ریاضی برای بهینهسازی استفاده میکنند در متدهای جدید معمولا محاسبات نرم که بر پایه رفتارهای طبیعت هستند استفاده میشوند. الگوریتمهای تکاملی و فراابتکاری معمولا از جذابترین روشهایی هستند که میتوان از آنها به منظور حل مسائل بهینهسازی استفاده کرد.
بسیاری از محققان این حوزه اخیرا روی الگوریتمهای فراابتکاری کار کرده و به خصوص روش روشهایی که مبتنی بر GA هستند تمرکز میکنند. به این ترتیب آنها میتوانند پاسخهای بهتری را برای مسائل بهینهسازی پیدا کنند. این پاسخها میتوانند مسائل دشوار و پیچیده دنیای واقعی را نیز خیلی ساده و راحت حل کنند.
الگوریتم جستجوی شکار یا HUS یکی از جذابترین این روشها به شمار میآید که مبتنی بر رفتار شکار حیوانات در یک گروه بوده و تلاش میکند تا چنین رفتاری را شبیهسازی کند. دقت داشته باشید که ما این ایده را در مشکلات محدود به کار میگیریم تا از مناطق ممنوعه برای جستجو اجتناب کنیم. در الگوریتمی که ارائه میشود هریک از شکارچیان یک راه حل را برای حل مشکل خاصی ارائه میدهند. این موضوع دقیقا مانند رفتار حیوانات شکارچی است که بهصورت گروهی شکار میکنند. همین موضوع نیز به ما کمک میکند تا بتوانیم خیلی راحت به نقطه بهینه دست پیدا کنیم.
مطلب پیشنهادی: الگوریتم گرگ خاکستری چیست؟
ویژگیهای مهمی که الگوریتم جستجوی شکار ارائه میدهد.
به طور کلی این الگوریتم نیز مانند بسیاری از الگوریتمهای دیگر فراابتکاری از پدیدههای طبیعی پیروی میکنند. این الگوریتم به منظور جستجوی بهینه تلاش میکند تا از فرایند شکار گروهی حیوانات در یک فرایند شکار پیروی کرده و در مسائل سخت و پیچیده شما را به جواب بهینه برساند. در این الگوریتم و در فرایند شکار حیواناتی که به طور گروهی شکار میکنند همکاری اعضای گروهی که با نام شکارچی شناخته میشوند منجر به محاصره طعمه و قرار گرفتن آن در یک محاصره میشود. این فرایند دقیقا مشابه فرایند بهینهسازی است که منجر به یافتن یک پاسخ سراسری میشود که توسط یک تابع هدف تعیین خواهد شد.
دقت داشته باشید که در الگوریتم جستجوی شکار یا HUS موقعیت هر شکارچی در مقایسه با طعمه شانس او را برای گرفتن طعمه تعیین میکند. دقیقا به طور مشابه مقدار تابع هدف توسط مجموعه مقادیر اختصاص داده شده به هر متغیر تصمیم تعیین خواهد شد. زمانی که صحبت از مسائل بهینهسازی پیوسته میشود، برآورد یک راه حل یا قراردادن مقادیر متغیرهای تصمیم در تابع هدف یا تابع تناسب انجام میشود. این مقدار توسط تابع ارزیابی خواهد شد که خود این تابع شامل هزینه، کارایی و خطا میشود. همین موضوع نیز باعث میشود تا یک مدل برای یک مسئله بهینهسازی پیوسته به وجود بیاید که پاسخی دقیقتر را ارائه میدهد.
مدل پیوسته الگوریتم جستجوی شکار یا HUS
مدل پیوسته در الگوریتم جستجوی شکار یا HUS به طور کلی بهصورت Q = (S, Ω, f) نشان داده میشود. ویژگیهایی که در این ساختار قابل اجرا هستند شامل موارد زیر میشوند:
- در اینجا S همان فضای جستجو است که روی مجموعه محدودی از متغیرهای تصمیمگیری پیوسته اجرا میشود.
- Ω مجموعهای از محدودیتهاست که روی متغیرهای تصمیمگیری که ما در مسئله داریم اجرا میشود.
- از طرف دیگر f نیز یک تابع هزینه است که قصد داریم آن را بهینهسازی کرده و در واقع کمترین مقدار آن را پیدا کنیم.
نکته مهمی که باید درباره فضای جستجوی S بدانید این است که این فضا بهعنوان مجموعهای از N متغیر پیوسته تعریف میشود. حال اگر یک پاسخ مناسب برای مسئله ما پاسخی مانند s خواهد بود که اولا باید عضو فضای جستجوی ما یعنی S بوده و بتواند تمامی شرایط و محدودیتهایی که روی متغیر وجود دارند را ارضا کند. در نتیجه ما میتوانیم آن را یک پاسخ مناسب برای مسئله بدانیم که به دنبال مینیمایزکردن آن در الگوریتم بهینهسازی خود هستیم. توجه داشته باشید که در برخی از مسائل ممکن است ما محدودیتی روی متغیرهای خود نداشته باشیم و این در حالی است که در برخی دیگر از مسائل نیز معمولا محدویتهایی وجود دارند.
انجام پروژه ژنتیک با بهترین هزینه
چه تفاوتی بین الگوریتم HUS و شکار گروهی حیوانات وجود دارد؟
همانطور که در بخشهای قبلی نیز اشاره کردیم ایده اصلی الگوریتم جستجوی شکار یا HUS از شکار گروهی حیوانات گرفته شده است. با این حال باید بدانید که یک تفاوت عمده بین نحوه بهینهسازی این الگوریتم و همینطور شکار حیوانات بهصورت گروهی وجود دارد. معمولا در شکار گروهی حیوانات میتوانند طعمه خود را ببینند یا اینکه در طول شب میتوانند بوی طعمه خود را احساس کنند. این در حالی است که ما در الگوریتم جستجوی شار هیچ ایده یا نشانهای از پاسخ و نقطه بهینه خود نخواهیم داشت.
در عوض باید بدانید که در مسئله بهینهسازی معمولا پاسخ بهینه کاملا ثابت است و این در حالی است که در شکار حیوانات معمولا طعمه بهصورت ثابت در یک نقطه باقی نمیماند. برای اینکه بتوانیم این تفاوتها را جبران کنیم با یک مفهوم جدید در این الگوریتم مواجه میشویم که به آن رهبر شکارچی گفته میشود. در اینجا رهبر یکی از شکارچیهاست که بهترین موقعیت را در مرحله فعلی دارد (به عبارت دیگر همان راه حل بهینه در میان راهحلهای فعلی است).
در اصل این الگوریتم فرض میکند که رهبر نقطه بهینه را پیدا کرده و سایر اعضا نیز شروع به حرکت به سمت آن میکنند. در صورتی که هریک از آنها امتیاز بهتری را نسبت به رهبر فعلی پیدا کند در مرحله بعدی او بهعنوان رهبر جدید انتخاب خواهد شد.
جزئیاتی که باید درباره نحوه اجرای الگوریتم جستجوی شکار بدانید.
وقتی صحبت از حیوانات شکارچی میشود باید بدانید که آنها به تدریج به سمت شکار و طعمه خود حرکت میکنند و در هر بار حرکت نیز موقعیت خود را اصلاح میکنند. به همین علت نیز در الگوریتم جستجوی شکار یا HUS شکارچیان بعد از اینکه به سمت لیدر قبلی حرکت میکنند موقعیت خود را بر اساس موقعیت سایر اعضا اصلاح خواهند کرد. نکته مهم دیگری که وجود دارد این است که در شکار گروهی حیوانات وقتی که طعمه از حلقه خارج میشود شکارچیان خود را دوباره سازماندهی میکنند تا بتوانند دوباره طعمه را محاصره کنند.
این موضوع در خصوص الگوریتم HuS نیز صدق میکند و این قابلیت به شکارچیان داده میشود تا بتوانند خارج از حلقه محاصره را نیز جستجو کنند. در این الگوریتم اگر موقعیتهای شکارچیان که در واقع همان راهحلهای مسئله ما هستند بیش از حد به یکدیگر نزدیک شده باشد گروه برای یافتن نقطه بهینه در تلاش بعدی سازماندهی مجدد خواهد شد.
مطلب پیشنهادی: الگوریتم ژنتیک چیست؟
توضیح کامل مراحل الگوریتم HUS
برای اجرای الگوریتم جستجوی شکار یا HUS باید به طور کامل با مراحلی که برای اجرای آن طی میشود آشنا شوید. در ادامه این مراحل را توضیح خواهیم داد.
مرحله اول: مقدار اولیه مسئله بهینهسازی و پارامترهای الگوریتم
پارامترهای الگوریتم HuS که برای حل مسئله بهینهسازی موردنیاز هستند در این مرحله مشخص خواهند شد. در این مرحله اندازه گروه شکار HGS (تعداد بردارهای حل مسئله ه در گروه شکار وجود دارند)، حداکثر میزان حرکت به سمت رهبر شکار MML و نرخ در نظر گرفتن گروه شکار HGCR که بین 0 و 1 است مشخص خواهند شد.
مرحله دوم: راهاندازی گروه شکار در این الگوریتم
بر اساس تعداد شکارچیان که در مرحله قبلی مشخص شده است ماتریس گروه شکار با بردارهایی که بهصورت کاملا تصادفی تولید میشوند پر خواهد شد. در این مرحله مقادیر تابع هدف محاسبه شده و رهبر بر اساس مقادیر توابع هدف شکارچیان تعریف میشود.
مرحله سوم: حرکت به سمت رهبر
موقعیتهای جدید شکارچی که در واقع همان راهحلهای جدید ما هستند را با استفاده از بردار x’ = (x1’, x2’m …, xN’) نشان میدهیم که با حرکت به سمت رهبر شکار (دقت داشته باشید که شکارچی رهبر بهترین موقعیت را در گروه دارد) به شرح زیر ایجاد میشود:
Xi’ = Xi + rand + MML * (XiL – Xi)
دقت داشته باشید که در اینجا rand یک عدد تصادفی یکنواخت است که بین 0 و 1 متغیر خواهد بود. از طرف دیگر XiL نیز ارزش موقعیت رهبر را نشان میدهد.
در خصوص الگوریتم جستجوی شکار یا HUS باید توجه داشت که برای هر شکارچی اگر حرکت به سمت رهبر موفقیتآمیز باشد شکارچی در موقعیت جدید خود باقی میماند. با این حال اگر حرکت موفقیتآمیز نباشد (که این بدان معناست که موقعیت قبلی آن بهتر از موقعیت جدید است) به موقعیت قبلی خود باز میگردد. با این کار ما میتوانیم به مزایایی دست پیدا کنیم. اولین مزیت این است که ما شکارچی را با بدترین شکارچی گروه مقایسه نمیکنیم و به همین علت نیز به شکارچیهای ضعیفتر اجازه میدهیم تا راه حلهای دیگری را نیز جستجو کنند.
آنها ممکن است بتوانند راهحلهای بهتری را پیدا کنند (که این موضوع دقیقا مانند الگوریتم ژنتیک است). از طرف دیگر برای جلوگیری از همگرایی سریع گروه، شکارچی موقعیت فعلی خود را با موقعیت قبلی که داشت مقایسه میکند. همین موضوع نیز باعث میشود تا تمامی موقعیتهای خوب حذف نشوند.
نکته مهم دیگری که در الگوریتم جستجوی شکار یا HUS باید به آن دقت داشته باشید این است که مقدار پارامتر MML برای مسائل مختلف متفاوت خواهد بود. این موضوع کاملا به تعداد تکرارها در هر دوره بستگی دارد که در مرحله پنجم درباره آن صحبت میکنیم. معمولا محدوده این متغیر بین 0.05 تا 0.4 خواهد بود که میتواند بهترین نتایج را به وجود بیاورد.
مطلب پیشنهادی: الگوریتم میگو در متلب
مرحله چهارم: تصحیح موقعیتها و همکاری بین اعضا
در این مرحله همکاری بین شکارچیان به منظور انجام کارآمدتر فرایند شکار مدلسازی خواهد شد. پس از حرکت به سمت رهبر، شکارچیان (براساس موقعیتهای دیگر شکارچی و برخی از عوامل تصادفی) موقعیت دیگری را برای یافتن راهحلهای بهتر انتخاب میکنند. دقت داشته باشید که در این مرحله شکارچیان فرایند اصلاح موقعیت خود را به دو روش انجام میدهند. روش اولی که برای این کار مورداستفاده قرار میگیرد تصحیح ارزش واقعی بود و روش دوم نیز تصحیح ارزش دیجیتال است.
هریک از این دو روش دارای مزایای مخصوص به خود هستند و در شرایط مختلفی نیز مورداستفاده قرار میگیرند. در منابع تخصصی که در خصوص الگوریتم جستجوی شکار یا HUS وجود دارند میتوانید اطلاعات کاملی را درباره این دو روش به دست بیاورید.
مرحله پنجم: سازماندهی مجدد گروه شکار
با ادامه فرایند جستجو فرصتی برای شکارچیان به وجود میآید تا در یک پاسخ بهینه محلی گیر بیفتند. در صورتی که چنین اتفاقی رخ دهد شکارچیان باید خود را دوباره سازماندهی کنند تا فرصت دیگری برای یافتن نقطه بهینه به دست بیاورند. الگوریتم جستجوی شکار این کار را در دو شرایط مستقل انجام میدهد. مقادیر تابع هدف برای رهبر و بدترین شکارچی در گروه کوچکتر از یک ثابت از پیش تعیین شده اندازهگیری شده و معیار خاتمه نیز برآورده نمیشود. در ادامه الگوریتم گروه شکار را برای هر شکارچی مجددا راهاندازی و سازماندهی میکند.
از طرف دیگر پس از تعداد معینی جستجو شکارچیان نیز خود را سازماندهی مجدد میکنند. همین عامل نیز باعث میشود تا فرایند بهینهسازی و الگوریتم جستجوی ما در پاسخهای محلی به دام نیفتد و بتواند به سمت پیدا کردن پاسخ بهینه سراسری حرکت کند.
مرحله ششم: تکرار مراحل 3 تا 5 تا زمانی که معیار خاتمه برآورده شود
در این مرحله باید دقت داشت که محاسبات زمانی خاتمه پیدا میکند والبته این تنها به شرطی است که معیار خاتمه برآورده شود. در صورتی که چنین اتفاقی رخ ندهد مراحل 3 تا 5 تکرار میشوند. معیار پایان را میتوان بهعنوان حداکثر جستجو تعریف کرد. از طرف دیگر بعد از سازماندهی مجدد عملکرد برای رهبر و بدترین شکارچی در گروه کوچکتر از یک ثابت از پیش تعیین شده نیز میتوان استفاده کرد. به این ترتیب فرایند جستجو در الگوریتم جستجوی شکار یا HUS خاتمه پیدا میکند.
مطلب پیشنهادی: الگوریتم جهش قورباغه
سخن پایانی
وقتی که صحبت از الگوریتمهای بهینهسازی میشود الگوریتمهای فراابتکاری معمولا حرف اول را در این زمینه میزنند. این الگوریتمها به شکلی طراحی شدهاند که بتوانند بهترین عملکرد را در موقعیتها و شرایط مختلف به شما ارائه دهند. یکی از بهترین الگوریتمهایی که در این زمینه وجود دارد الگوریتم جستجوی شکار یا HUS و به شما کمک میکند تا بتوانید به بهترین شکل ممکن فرایند جستجو را انجام دهیم دهید. این الگوریتم از الگوی شکار حیوانات وحشی گرفته شده و بهینهسازیهایی نیز روی آن انجام شده است. در صورتی که شما هم علاقهمند هستید تا اطلاعات بیشتری را درباره این دسته از الگوریتمهای بهینهسازی و جستجو به دست بیاورید حتما از سایر بخشهای سایت ما نیز دیدن کنید.
دیدگاه شما