۱- مقدمه

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

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

بهینه یابی در طراحی مهندسی بخصوص در مسائل پیچیده از اهمیت بالایی برخوردار است. بهینه سازی درحالت کلی، ایجاد تغییر در اجزاء سیستم با هدف دست یابی به مقادیر بهتر است. اساساً فرایند بهینه یابی به یافتن مجموعه مقادیر متغیرهای طراحی که منجر به مقدار بهینه برای تابع هدف شود، گفته می شود. در دهه اخیر روشهای بهینه یابی کاوشی که مهمترین آنها الگوریتم ژنتیک می باشد بسیار مورد توجه قرارگرفته است. روشهای بهینه یابی بر پایه الگوریتم تکاملی با روشهای بهینه یابی بر پایه ریاضیات تفاوت دارند. تفاوت اصلی در این است که الگوریتم ژنتیک با جمعیتی از جوتبها سروکار دارد نه با یک جواب و فرم ریاضی تابع، که اگر گستردگی و پخش جمعیتها مناسب باشد از حبس جواب بهینه در نقاط بهینه محلی جلوگیری می نماید.[۱۱]

 

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

الگوریتم ژنتیک (Genetic Algorithm) یکی از روش های قدیمی و پرکاربرد برای بهینه سازی است که در دهه ۱۹۶۰ میلادی معرفی شد. نطق الگوریتم ژنتیک اولین بار در اوایل ۱۹۷۰ توسط جان هلند[۱] در دانشگاه میشیگان آمریکا ابداع گردید]۹[

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

بیشتر الگوریتم‌های ژنتیک، تغییر یافته منطق ژنتیک ساده که توسط گلدبرگ در ۱۹۸۹ پیشنهاد گردید، می‌باشد]۲۰[ منطق ساده ژنتیک دارای سه عملگر تولید نسل، پیوند و جهش می باشد، تولید نسل عامل اساسی انتخاب و بقای مناسب‌ترین رشته است. پیوند فرآیندی است که در آن یک رشته به دو قسمت یا بیشتر شکسته می شود و این قسمتها با تقسیمات متناظر در رشتههای دیگر جابجا میشوند. عمل جهش برای ایجاد نسل بعد بسیار مفید میباشد.

-۲-     مسائل‌ بهینه‌یابی‌

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

۱- قیود ضمنی: در بسیاری از مسائل مهندسی بسیاری از قیود را نمی‌توان به صورت توابع صریح از متغیرهای طراحی بیان کرد، به این قیود، قیود ضمنی گویند.

۲- قیود خطی و غیر خطی: هرگاه قیود شامل عبارتی مرحله اول از متغیرهای طراحی باشند، به این قیود، قیود خطی گویند، و اگر شامل عبارت مرحله دوم یا بیشتر از متغیرهای طراحی باشند، به آن قیود غیرخطی گویند.

۳- قیود نامساوی: هرگاه در مسئله بهینه‌یابی قیود شامل عباراتی که به صورت رابطه‌ای مساوی از متغیرهای طراحی بیان شوند، به آن قیود مساوی و اگر به صورت رابطه‌ای که به صورت نامساوی بیان شود، قیود نامساوی گویند.

الگوی بهینه‌سازی طراحی استاندارد به صورت زیر تعریف می‌شود:

مطلوبست  از متغیرهای طراحی به طوری که  را ماکزیمم یا مینیمم کند و P قید مساوی و m قید نامساوی را ارضای نماید.

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

                                         (۳-۱)

 

(۳-۲)

 

قید نامساوی‌ و  قید مساوی‌ است‌. لزومی‌ ندارد که‌ تعداد متغیرها (n) و تعداد قیدها (m یا p) ارتباطی‌ با هم‌ داشته‌ باشند ]۱۱[.

 

-۳-     تکنیک‏های جستجو

در کلی‌ترین حالت روش‌های بهینه‌یابی را می‌توان به صورت زیر تقسیم‌بندی کرد:

۱- روش محاسباتی[۲]

۲- روش شمارشی و تکراری[۳]

۳- روش تصادفی

در میان این روش ها، روش‌های محاسباتی دارای شهرت بیشتری می‌باشند. در روش‌های محاسباتی مدل ریاضی بهینه‌یابی به صورت زیر تعریف می‌شود:

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

الف- تابع هموار[۴]و پیوسته باشد.

ب- نقاط بهینه به صورت محلی بدست می‌آیند.

روش های محاسباتی نیاز به یک تابع مشتق‌پذیر دارند و این در حالی است که بسیاری از مسائل طبیعی دارای توابع غیر پیوسته و مشتق‌ناپذیر می‌باشند. در روش‌های بر پایه گرادیان مشکل اساسی وجود دارد که بدام افتادن جواب در نقاط بهینه محلی در اثر حدس اولیه نامناسب می‌باشد]۱۰[.

روش‌های تکراری دارای ایده‌ای ساده و منطقی هستند و در یک فضای طراحی تمام نقاط موجود مورد بررسی قرار می‌گیرند. اگرچه این روش ساده، توانا به نظر می‌رسد، اما چنانچه فضای طراحی بزرگ باشد که در اکثر موارد چنین است، استفاده از این روش عملاً غیر ممکن و یا غیر مؤثر است.

با توجه به نقاط ضعف روش‌های محاسباتی و تکراری روز به روز به معروفیت روش‌های تصادفی افزوده می‌شود. این روش‌ها از یک الگوریتم تصادفی برای رسیدن به بهترین جواب استفاده می‌کنند. استفاده از روش‌های انتخاب تصادفی در نگاه اول عجیب به نظر می‌رسد اما طبیعت ثابت می‌کند، چنین نیست. الگوریتم ژنتیک مثالی از روش‌های تصادفی است که از ابزار انتخاب تصادفی بهره می‌برد]۱۲[.

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

۱- Holland

۱- Calculus based

۲- Enumerative

۳-Smooth