فهرست بستن

دانلود دسته: گرگ خاکستری

کتابخانه حل کننده الگوریتم بهینه سازی گرگ خاکستری (GWO)

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

عملیات شکار در گرگهای خاکستری در سه فاز انجام می گیرد:

  • تعقیب، دنبال کردن و رسیدن به شکار
  • محاصره، آزار و اذیت شکار تا زمانی که متوقف گردد
  • حمله مستقیم به شکار

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

  1. پارامتر a که در طول تکرارها از دو شروع و رفته رفته با کاهش به یک می رسد را محاسبه می نماییم.
  2. برای هر یک از سه گرگ آلفا، بتا و دلتا بردارهای تصادفی r1 و r2  را در ابعاد بردار پاسخ بدست می آوریم (در بازه بین صفر و یک)
  3. بطور متناظر برای هر یک دو بردار ضرایب A و C را محاسبه می کنیم: A = 2a.r1-a و C = 2r2
  4. سپس برای هر یک بردار D = |C.Xw-X| را محاسبه می نماییم که Xw موقعیت هر یک از گرگهای آلفا، بتا و امگا می باشد و X موقعیت گرگی که می خواهیم بروز رسانی کنیم است.
  5. متناظر با هر بردار X’ = Xw-A محاسبه می گردد.
  6. درنهایت موقعیت جدید گرگی که بدنبال بروز رسانی اش بودیم به شکل میانگین گیری از سه بردار X’ بدست آمده از هر یک از گرگهای آلفا، بتا و دلتا خواهد بود.

همانطور که مستحضر هستید زبان برنامه نویسی پایتون در چند سال اخیر جای خود را در بین زبان های برنامه نویسی مورد استفاده برای محاسبات عددی و شبیه سازیهای علمی باز کرده است. از این رو توانایی حل مسائل بهینه سازی با استفاده از این زبان برنامه نویسی دارای اهمیتی ویژه است. کتابخانه حل کننده الگوریتم گرگ خاکستری به این منظور آماده شده است که محققان خیلی سریع بتوانند مسائل خود را بدون در گیر شدن عمیق با نحوه پیاده سازی خود الگوریتم حل نمایند. لازم به ذکر است با توجه به در دسترس بودن کدهای برنامه کاربر می تواند این الگوریتم را بهبود بخشیده و ویرایشهای بهتری از آن را ارائه دهد. در ادامه به نحوه استفاده از این کتابخانه پرداخته می شود.

کد زیر را که برای یافتن مینیمم تابع مجموع سینوس تعدادی متغیر نوشته شده است، نحوه استفاده از کتابخانه را بطور ساده بیان می نماید:

from numpy import random, sin
from PyGWO import GWOSolver


def f(x):
    o = 0
    for a in x:
        o += sin(a) ** 2
    return o

def solution_generator():
    return 10 * (random.rand(10) - 0.5)

myGWO = GWOSolver(f, 200, solution_generator)
myGWO.solve(2000)
print(myGWO)

همانطور که مشاهده می شود از کتابخانه PyGWO که ارائه شده توسط ماست، کلاس حل کننده یعنی GWOSolver فراخوانی شده است. شی myGWO از نوع این کلاس ساخته شده است که پارامترهای ورودی سازنده آن به ترتیب تابع هدف مسئله بهینه سازی (که بصورت یک تابع با یک ورودی است و آن ورودی بردار پاسخ می باشد.) جمعیت گله گرگها در الگوریتم بهینه سازی گرگ خاکستری و تابع ایجاد کننده پاسخ های تصافی می باشد. تابع تولید کننده پاسخ های تصادفی برای ایجاد جمعیت اولیه بکار می رود. بدون ورودی است و کاربر باید متناسب با مسئله خود آن را طراحی نماید چرا که ایجاد جمعیت اولیه تاثیر بسزایی در پاسخهای الگوریتم بهینه سازی دارد. تابعی که از کلاس GWOSolver عملیات بهینه سازی را آغاز می کند solve نام دارد که تعداد تکرار را به عنوان ورودی می گیرد. خروجی کد بالا به شکل زیر خواهد بود:

Best solution vector:
-۰٫۰۰۵۱۴۷۸۶۱۷۶۹۴۶۸۰۸۴
-۰٫۰۰۴۱۷۹۲۸۱۶۲۴۹۷۵۹۲۵
۳٫۱۴۲۲۴۰۹۲۳۳۳۸۰۵۳
۰٫۰۰۲۴۲۱۲۱۹۳۴۳۳۴۱۶۲۲۶
۰٫۰۰۱۹۶۶۷۹۸۴۱۲۶۰۱۵۹۱۴
-۰٫۰۰۰۳۴۶۳۱۸۰۳۶۰۹۷۵۴۳۷۶
۶٫۲۸۲۵۶۸۷۸۶۲۹۲۰۸۹
-۶٫۴۵۲۲۱۴۳۷۰۱۰۷۳۷۸e-05
۰٫۰۰۳۵۹۵۴۶۱۵۸۵۹۰۱۶۰۱۴
۰٫۰۰۰۵۴۶۷۳۰۸۰۸۵۶۳۸۶۱۳
Fitness: 6.784777628314261e-05

محتویات بسته:

  • فایل پایتون کلاس حل کننده (Solver) الگوریتم بهینه‌سازی گرگ خاکستری
  • فایل پایتون مثال استفاده از الگوریتم برای حل یک مسئله بهینه‌سازی نمونه

امیدوارم از خرید این بسته نهایت رضایت را داشته باشید. با ما در تماس باشید.