0
سبد خرید شما خالیست!
میتواند برای مشاهده محصولات بیشتر به صفحات زیر بروید :

الگوریتم های بهینه سازی فراابتکاری در MATLAB

الگوریتم های بهینه سازی فراابتکاری در MATLAB

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

بهینه سازی فراابتکاری

هدف و گام های اصلی

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

اگر این پروسه را به زبان ریاضی بیان کنیم به طور خلاصه با چند گام اصلی رو به رو هستیم:

گام اول، تعریف مسئله یه صورت تابع کمی که دامنه تغییرات مشخص باشد.

 گام دوم، یافتن نقاط بحرانی (نقاطی که احتمال دارد نقاط بیشینه یا کمینه باشند) در تابع  مورد نظر

گام سوم، یافتن نقطه اکسترمم (ماکزیمم یا مینیموم) از بین نقاط بحرانی

مراحل بهینه سازی فراابتکاری

بهینه سازی تحلیلی (کلاسیک)

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

الگوریتم های بهینه سازی فراابتکاری

در حالت مقابل روش دقیق، روش های تقریبی در سه دسته کلی ابتکاری (heuristic)، فراابتکاری (meta-heuristic) و فوق ابتکاری (hyper heuristic) ایجاد شده و توسعه یافتند که الگوریتم های فراابتکاری مهمترین آنها هستند. الگوریتم های فراابتکاری انواع مختلفی دارند که روش های مبتنی بر جمعیت، پر کاربردترین آن ها هستند. در ادامه به چند الگوریتم از بهینه سازی فراابتکاری مبتنی جمعیت می پردازیم.

الگوریتم ژنتیک

الگوریتم ژنتیک

یکی از انواع روش های بهینه سازی فراابتکاری مبتنی بر جمعیت، الگوریتم های تکاملی (Evolutionary algorithm) هستند که معروف ترین آنها، الگوریتم ژنتیک است. اساس این روش الهام گرفته شده از طبیعت و بر پایه فرآیند زیستی موجودات است. در طبیعت هر نسلی از موجودات با تولید مثل نسل دیگری را به وجود می آورند و هر موجودی سازگاری بیشتری با طبیعت داشته باشد، باقی می ماند. همین اصول، پایه ی اصلی الگوریتم ژنتیک هستند.

اجزای اصلی الگوریتم ژنتیک:

  •        شخص یا  ژن یا متغیر یا  .......
  •        تابع برازندگی یا تابع هدف یا ....
  •        جمعیت
  •        انتخاب والدین
  •        ترکیب والدین
  •        جهش

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

الگوریتم ژنتیک

ازدحام ذرات (Particle swarm optimization)

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

بهینه سازی فراابتکاری

کلونی مورچگان(Ant colony optimization)

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

در الگوریتم کلونی موچگان (ACO) همین تئوری پیاده سازی شده است. با فرق اینکه مورچه های مصنوعی در روی نمودار (به کمک گراف ها ) در حال حرکت هستند و هدف یافتن کوتاه ترین مسیر برای رسیدن به جواب مسئله است.

بهینه سازی فراابتکاری

بهینه سازی فراابتکاری در MATLAB

متلب (MATLAB) به بیان خود سایت توسعه دهنده اش Mathworks هم یک نرم افزار، هم یک بستر برنامه نویسی و هم یک زبان برنامه نویسی است که برای اهداف بسیار ساده ماننده محاسبات جبری خطی تا مسائل بسیار پیچیده ی به مهندسین شاخه های متفاوت مثل مکانیک، هوافضا، برق، کامپیوتر، عمران و .... و حتی محققین سایر رشته ها کمک می کند. در همین راستا یک از ابزارهای پرکاربرد برای اجرا فرآیندهای بهینه سازی همین برنامه است.

متلب دارای یک جعبه ابزار مخصوص برای بهینه سازی است که با نام Optimization Toolbox شناخته می شود و برای مسائل مختلف بهینه سازی خطی و غیرخطی و همچنین روش های بهینه سازی فراابتکاری مورد استفاده قرار می گیرد. به طور مثال برای جل یک مسئله از طریق الگوریتم ژنتیک، matlab یک فرم مخصوص دارد که حتی شاید بدون تسلط 100% بر تئوری های پشت الگوریتم با انتخاب تعداد جمعیت، اهداف، روش ترکیب و ...  قادر هستید از این ابزار استفاده کنید. البته جدا از این تولباکس با فراخوانی مستقیم خود توابع مربوط به الگوریتم ها نیز میتوان حل را دنبال کرد.

بهینه سازی در متلب

جمع بندی

در نهایت بهینه سازی علمی است که به کمک بشر آمده تا در کمترین زمان و با صرف کمترین انرژی به بهترین راه حل ها و اهداف برسد. طبیعی است که انسان ها در علوم مختلف تا به امروز برای بسیاری از مسائل و مشکلات راه حل هایی یافته اند، اما اینکه بین این راه حل ها کدام یک با کمترین هزینه به بیشترین بازدهی منتهی می شود، سوالی است که پاسخ آن در بهینه سازی به دست می آید. روش های تحلیلی دقیق و یا روش های تقریبی مانند بهینه سازی فراابتکاری و همچنین ابزارهایی مانند زبان های برنامه نویسی مثل پایتون (Python) یا تولباکس های موجود در متلب، همه این هدف را دنبال می کنند.

نویسنده: ستاره دهقان، کارشناس دپارتمان مهندسی هوافضا گروه آموزشی پارس پژوهان

درج نظر
خانه
دسته ها
جستجو
0 سبد
پروفایل
بیشتر
تماس
دسته بندی ها
دوره‌های فنی مهندسی
دوره‌های مدیریت
بازگشت به بالا