فول تکست - پژوهش علمی

متن کامل پایان نامه را در سایت منبع fuka.ir می توانید ببینید

1 -4- فرضیات تحقیق ........................................................................................... 3
1 -5- اهمیت و ضرورت تحقیق ................................................................................ 3
1 -6- خلاصه فصل های آتی.................................................................................... 4
2- ادبیات و پیشینه تحقیق ............................................................................................ 5
2-1- مقدمه ...................................................................................................... 6
2-2- مرور ادبیات الگوریتم های فرا ابتکاری ................................................................... 6
2-3- جمع بندی ................................................................................................. 15
3- زمینه های علمی تحقیق .......................................................................................... 16
3-1- مقدمه ...................................................................................................... 17
3-2- مسائل بهینه سازی ........................................................................................ 17
3-3- بررسی روش‌های جستجو و بهینه‌سازی ................................................................. 18
3-3-1- روش‌های شمارشی ........................................................................... 19
3-3-2- روش‌های محاسباتی .......................................................................... 20
3-3-3- روش‌های ابتکاری و فرا ابتکاری ............................................................. 21
3-4- مسائل بهینه‌سازی ترکیبی ................................................................................. 21
3-5- روشهای حل مسائل بهینه‌سازی ترکیبی .................................................................. 23
3-5-1- روش های ابتکاری ........................................................................... 24
3-5-1-1- آزاد‌سازی ..................................................................... 24
3-5-1-2- تجزیه ......................................................................... 25
3-5-1-3- تکرار .......................................................................... 25
3-5-1-4- روش تولید ستون ............................................................ 25
3-5-1-5- جستجوی سازنده ............................................................ 26
3-5-1-6- جستجوی بهبود یافته ........................................................ 26
3-5-1-7- روش جستجوی همسایه ..................................................... 27
3-5-2- روش‌های فرا ابتکاری برگرفته از طبیعت ...................................................... 28
3-6- جمع بندی ................................................................................................. 29
4- ارائه الگوریتم جدید پیشنهادی ................................................................................... 30
4-1- مقدمه ...................................................................................................... 31
4-2- الگوریتم جستجوگر تکاملی............................... (Seeker Evolutionary Algorithm) 31
4-3- اعتبار سنجی الگوریتم جستجوگر تکاملی................................................................. 42
4-3-1- مسائل مورد استفاده برای ارزیابی الگوریتم پیشنهادی ........................................ 43
4-3-2- عملکرد الگوریتم جستجوگر تکاملی ......................................................... 55
4-3-3- مقایسه عملکرد الگوریتم جستجوگر تکاملی باICA, OICA , CICA3 ................ 65
4-3-4- مقایسه عملکرد الگوریتم جستجوگر تکاملی با RGA, PSO , GSA ................... 67
4-3-5- مقایسه عملکرد الگوریتم جستجوگر تکاملی با HS, IBA , ABS ....................... 68
4-3-6- مقایسه عملکرد الگوریتم جستجوگر تکاملی با BA, CS, LFA, FA ................... 70
4-4 فرایند تکاملی الگوریتم های فرا ابتکاری .................................................................. 72
4-5 جمع بندی .................................................................................................. 75
5- نتیجه گیری و پیشنهادها ......................................................................................... 76
5-1- نتیجه گیری ............................................................................................... 77
5-2- پیشنهادها ................................................................................................. 77
مراجع ................................................................................................................... 78
پیوست 1- کد MATLAB حلقه اصلی الگوریتم جستجوگر تکاملی ................................................ 82
پیوست 2- کد MATLAB حلقه فرعی الگوریتم جستجوگر تکاملی ................................................ 86
پیوست 3- کد MATLAB مسائل ریاضی استفاده شده ............................................................. 90
فهرست جداول
جدول 4-1 مقدار پارامتر های الگوریتم برای حل f Gol و f Six و f Bra ............................................ 63
جدول 4-2 مقدار شاخص های ارزیابی عملکرد الگوریتم برای حل f Gol و f Six و f Bra ......................... 65
جدول 4-3 نتایج مقایسه عملکرد الگوریتم جستجوگر تکاملی با ICA, OICA , CICA3 ..................... 66
جدول 4-4 مقادیر برخی از پارامتر های الگوریتم جستجوگر تکاملی ................................................. 66
جدول 4-5 نتایج مقایسه عملکرد الگوریتم جستجوگر تکاملی با RGA, PSO , GSA ........................ 67
جدول 4-6 مقادیر برخی از پارامتر های الگوریتم جستجوگر تکاملی ................................................. 68
جدول 4-7 نتایج مقایسه عملکرد الگوریتم جستجوگر تکاملی با ABC, IBA, HS ............................. 69
جدول 4-8 مقادیر برخی از پارامتر های الگوریتم جستجوگر تکاملی ................................................. 70
جدول 4-9 نتایج مقایسه عملکرد الگوریتم جستجوگر تکاملی با LFA, FA, CS, BA ........................... 71
جدول 4-10 مقادیر برخی از پارامتر های الگوریتم جستجوگر تکاملی ............................................... 72
فهرست شکل ها
شکل 3-1 طبقه‌بندی انواع روش‌های بهینه‌سازی ....................................................................... 19
شکل 4-1 فلوچارت الگوریتم جستجوگر تکاملی ...................................................................... 33
شکل 4-2 نحوه حرکت جستجو گرها در ناحیه جواب ................................................................ 34
شکل 4-3 حرکت جستجو گر به سمت بهترین جستجو گر ........................................................... 39
شکل 4-4 شبه کد حلقه اصلی الگوریتم جستجوگر تکاملی ........................................................... 41
شکل 4-5 شبه کد حلقه اصلی الگوریتم جستجوگر تکاملی ........................................................... 42
شکل 4-6 نمودار سه بعدی تابع F1 ................................................................................... 44
شکل 4-7 نمودار سه بعدی تابع Goldstein-Price ............................................................... 45
شکل 4-8 نمودار سه بعدی تابع Six-hump camel back ....................................................... 46
شکل 4-9 نمودار سه بعدی تابع Branins ........................................................................... 47
شکل 4-10 نمودار سه بعدی تابع Rosenbrock ................................................................... 48
شکل 4-11 نمودار سه بعدی تابع Sphere .......................................................................... 49
شکل 4-12 نمودار سه بعدی تابع Schwefel ....................................................................... 50
شکل 4-13 نمودار سه بعدی تابع Ackley .......................................................................... 51
شکل 4-14 نمودار سه بعدی تابع Rastrigin ....................................................................... 52
شکل 4-15 نمودار سه بعدی تابع Easom .......................................................................... 53
شکل 4-16 نمودار سه بعدی تابع Griewank ...................................................................... 54
شکل 4-17 موقعیت مکانی جستجوگرها قبل از عملیات جستجو در تکرار اول ...................................... 56
شکل 4-18 موقعیت مکانی جستجوگرها بعد از عملیات جستجو در تکرار اول ...................................... 56
شکل 4-19 موقعیت مکانی جستجوگرها قبل از عملیات جستجو در تکرار دوم ...................................... 57
شکل 4-20 موقعیت مکانی جستجوگرها بعد از عملیات جستجو در تکرار دوم ...................................... 57
شکل 4-21 موقعیت مکانی جستجوگرها قبل از عملیات جستجو در تکرار سوم ..................................... 58
شکل 4-22 موقعیت مکانی جستجوگرها بعد از عملیات جستجو در تکرار سوم ..................................... 58
شکل 4-23 موقعیت مکانی جستجوگر ها قبل از عملیات جستجو در تکرار چهارم .................................. 59
شکل 4-24 موقعیت مکانی جستجوگر ها بعد از عملیات جستجو در تکرار چهارم .................................. 59
شکل 4-25 موقعیت مکانی جستجوگرها قبل از عملیات جستجو در تکرار پنجم ..................................... 60
شکل 4-26 موقعیت مکانی جستجوگرها بعد از عملیات جستجو در تکرار پنجم ..................................... 60
شکل 4-27 عملکرد الگوریتم جستجوگر تکاملی برای تابع F1 ........................................................ 62
شکل 4-28 عملکرد الگوریتم جستجوگر تکاملی برای تابع Six-hump camel back ........................... 63
شکل 4-29 عملکرد الگوریتم جستجوگر تکاملی برای تابع Branins ................................................ 64
شکل 4-30 عملکرد الگوریتم جستجوگر تکاملی برای تابع Goldstein-Price .................................... 64
شکل 4-31 نمایش سه بعدی حراررتی تابع F2 از نمای بالا.......................................................... 74
شکل 4-32 نمایش سه بعدی حراررتی تابع F2 ....................................................................... 74
شکل 4-33 نمایش سه بعدی حراررتی تابع F2 و نقطه بهینه این تابع ............................................... 75
فصل اول
کلیات تحقیق
1-1- مقدمه
در ریاضیات و علوم رایانه یک مسأله بهینه سازی، مسأله یافتن بهترین راه حل از میان همه راه حل های عملی می باشد. مسأله های بهینه سازی می تواند به دو دسته تقسیم شود که متغیرها پیوسته یا گسسته باشند. روش های حل متفاوتی برای این گونه مسائل وجود دارند که به سه دسته روش های سنتی ریاضی، روش های ابتکاری و روش های فرا ابتکاری تقسیم می شوند. در اکثر مسائل بهینه سازی با افزایش ابعاد مساله زمان حل آن نیز به صورت نمایی افزایش پیدا می کند. به این گونه مسائل، مسائل بهینه سازی ترکیبیاتی گفته می شود. به همین علت یکی از بهترین گزینه های برای حل مسائل بهینه سازی استفاده از الگوریتم های فرا ابتکاری است. مهمترین علت استفاده از الگوریتم های فرا ابتکاری، بدست آوردن یک جواب مناسب در زمان مناسب است. از همین رو است که توسعه و میزان استفاده از الگوریتم های فرا ابتکاری به شدت رشد داشته است.
1-2- تعریف مساله
هدف از بهینه‌سازی یافتن بهترین جواب قابل قبول با توجه به محدودیت‌ها و نیازهای مسأله است. بهینه‌سازی یک فعالیت مهم و تعیین‌کننده در بسیاری ار زمینه های علمی، اقتصادی، صنعتی و غیره است. بسیاری از مسائل بهینه‌سازی در مهندسی، طبیعتاً پیچیده‌تر و مشکل‌تر از آن هستند که با روش‌های مرسوم بهینه ‌سازی نظیر روش های برنامه‌ریزی ریاضی و نظایر آن قابل حل باشند. از جمله راه ‌حل‌های موجود در برخورد با این گونه مسائل، استفاده از الگوریتم‌های تکاملی است. دلیل دیگر استفاده از الگوریتم های تکاملی، زمان بسیار زیاد و غیر ممکن روش های دقیق ریاضی برای حل مسائلی با پارامتر های زیاد و پیچیده است. در سال‌های اخیر یکی از مهمترین و امیدبخش‌ترین تحقیقات، «روش‌های ابتکاری برگرفته از طبیعت» بوده است. این روش‌ها شباهت‌هایی با سیستم‌های اجتماعی و یا طبیعی دارند. ساختار ‌آنها برگرفته شده از روند تکاملی موجود در آن سیستم می باشد که در حل مسائل با ساختار پیچیده نتایج بسیار خوبی داشته است. در اکثر این گونه الگوریتم ها عملیات جستجو با تولید یک جمعیت تصادفی در ناحیه جستجو شروع می شود. سپس با استفاده هوش محاسباتی موجود در الگوریتم، جواب ها حرکت داده می شوند. این جابجایی به نحوی می باشد که بعد از گذشتن چند گام جمعیت به سمت نقطه بهینه همگرا می شوند. تفاوت اصلی الگوریتم های تکاملی در همین نحوه جابجایی جمعیت می باشد. در سال های اخیر توسعه و استفاده از الگوریتم های تکاملی رشد چشم گیری داشته است. هر یک از آن ها دارای نقاط ضعف و قوتی بوده است به طوری که هر از چند گاهی شاهد معرفی الگوریتمی جدید هستیم که برتری خود را نسبت به تعدادی از الگوریتم های قبلی نشان می دهد.
در این پایاننامه، یک الگوریتم جدید برای حل مسائل بهینه سازی پیوسته معرفی شده است. این الگوریتم مبتنی بر یک منطق ساده جستجو است. برای ارزیابی عملکرد الگوریتم های فرا ابتکاری از مسائل ریاضی موجود در ادبیات استفاده می شود. برای این الگویتم نیز از 11 مساله ریاضی برای مقایسه و ارزیابی عملکرد الگوریتم پیشنهادی استفاده شده است. در این مقایسات نتایج الگوریتم پیشنهادی با نتایج یازده الگوریتم فرا ابتکاری مقایسه شده است. این الگوریتم ها جزء پر رجوع ترین الگوریتم های فرا ابتکاری در این زمینه هستند.
1-3- هدف تحقیق
هدف از این پایان نامه معرفی یک الگوریتم فراابتکاری کارا برای حل مسائل بهینه سازی پیوسته است که بتواند نسبت به اغلب الگوریتم های فراابتکاری مشهور دارای برتری باشد.
1-4- فرضیات تحقیق
در این پایان نامه، فرضیات مسأله وجود ندارد و طراحی الگوریتم تکاملی جستجوگر فقط برای مسائل بهینه سازی پیوسته صورت میگیرد.
1-5- اهمیت و ضرورت تحقیق
گستره استفاده از الگوریتم های فراابتکاری در علوم مختلف به خصوص مهندسی صنایع در طی سال های گذشته بسیار زیاد بوده است. تعداد ارجاعات به مقالات اصلی این الگوریتم ها خود گواه این امر است. در ادامه به تعدادی از این موارد اشاره می شود.
الگوریتم تجمعی ذرات (1995) - 19927 ارجاع
الگوریتم هارمونی (2001) - 866 ارجاع
الگوریتم زنبور عسل (2007) - 590 ارجاع
الگوریتم فرهنگ (1994) - 517 ارجاع
الگوریتم رقابت استعماری (2007) - 195 ارجاع
الگوریتم گرانشی (2009) - 188 ارجاع
تعداد ارجاعات بسیار زیاد به مقالات الگوریتم های فراابتکاری نشان دهنده اهمیت فراوان این روش ها است. روش حل یا پدیده علمی که وسعت استفاده از آنها به این شکل باشد بسیار اندک است.
1-6- خلاصه فصل های آتی
در فصل دوم به مرور ادبیات الگوریتم های فرا ابتکاری پرداخته خواهد شد. الگوریتم هایی که در این فصل مرور می شود شامل الگوریتم ژنتیک، الگوریتم آنیلینگ شبیه‌سازی، الگوریتم ایمنی مصنوعی، الگوریتم جستجوی ممنوعه، الگوریتم بهینه‌سازی کلونی مورچه، الگوریتم اجتماع ذرات، تکامل تفاضلی، الگوریتم جستجوی هارمونی، جستجوی فاخته، الگوریتم دسته‌ی ماهی‌های مصنوعی، الگوریتم کرم شب تاب، الگوریتم خفاش، الگوریتم جستجوی گرانشی، الگوریتم کلونی زنبور عسل، الگوریتم رقابت استعماری، الگوریتم بهینه سازی فاخته است.
در فصل سوم به زمینه های علمی تحقیق پرداخته می شود. در این فصل روش های مختلف جستجو و بهینه سازی مورد بحث قرار می گیرد. مسائل بهینه سازی ترکیبیاتی و روش های حل آن شرح داده می شود.
در فصل چهارم ساختار الگوریتم جستجوگر تکاملی شرح داده خواهد شد و سپس با استفاده از چندین مساله ریاضی عملکرد آن با معروف ترین الگوریتم های فرا ابتکاری مورد مقایسه قرار خواهد گرفت.
فصل پنجم مربوط به نتیجه گیری و پیشنهادات آتی تحقیق خواهد بود.
فصل دوم
ادبیات و پیشینه تحقیق
2-1- مقدمه
در سالهای دهه 1950 برنامه نویسی کامپیوترهای اولیه توسط تغییر سیم ها و تنظیم هزاران کلید و سوییچ انجام می شد. بعد از آن افراد به دنبال ابزارهای سریع تر و راحت تری برای برنامه نویسی بودند. در اواخر دهه 1950 مفسرهای زبان های طبیعی و کامپایلرهای پا به عرصه ظهور گذاشتند. در این سال ها بود که زبان های برنامه نویسی به منظور استفاده در دنیای نرم افزارهای تجاری عرضه شدند. این امر باعث شد تا آشنایی با زبان های برنامه نویسی به صورت عام در بین متخصصان رواج پیدا کند. بعد از این رویداد مهم اکثر دانشمندان در زمینه های مختلف علمی سعی کردند از زبان برنامه نویسی استفاده کنند. یکی از موارد استفاده از زبان های برنامه نویسی، علم ریاضی و انجام محاسبات ریاضی بود. زمان حل بسیار کمتر این روش نسبت به حل دستی باعث شد تا سرعت استفاده از برنامه نویسی در شاخه های مختلف ریاضی یه شدت رشد کند. در دهه 1970 برای اولین بار دانشمندان برای حل مسائل بهینه سازی ترکیبیاتی از الگوریتم های فرا ابتکاری استفاده کردند. آن ها برای پیاده سازی الگوریتم ها از زبان برنامه نویسی استفاده کردند. نتیجه این کار بدست آمدن جواب های مناسب در زمان مناسب برای مسائل بهینه سازی ترکیبیاتی با اندازه بزرگ بود. تا آن زمان برای این گونه مسائل به دلیل زمان حل بسیار زیاد جواب مناسبی یافت نشده بود.
2-2- مرور ادبیات الگوریتم های فرا ابتکاری
در دهه هفتاد میلادی دانشمندی از دانشگاه میشیگان به نام جان هلند ایده استفاده از الگوریتم ژنتیک را در بهینه‌سازی‌های مهندسی مطرح کرد. ایده اساسی این الگوریتم انتقال خصوصیات موروثی توسط ژن‌هاست. الگوریتم ژنتیک نوع خاصی از الگوریتم های تکاملی است که از تکنیک های زیست‌شناسی فراگشتی مانند وراثت و جهش استفاده می‌کند. در واقع الگوریتم های ژنتیک از اصول انتخاب طبیعی داروین برای یافتن فرمول بهینه جهت پیش‌بینی یا تطبیق الگو استفاده می کنند. الگوریتم های ژنتیک اغلب گزینه خوبی برای تکنیک‌های پیش‌بینی بر مبنای رگرسیون هستند. مختصراً گفته می‌شود که الگوریتم ژنتیک یک تکنیک برنامه‌نویسی است که از تکامل ژنتیکی به عنوان یک الگوی حل مسئله استفاده می‌کند. در طبیعت، فرایند تکامل هنگامی ایجاد می‌شود که چهار شرط زیر برقرار باشد:
الف) یک موجود توانایی تکثیر داشته باشد (قابلیت تولید مثل).
ب) جمعیتی از این موجودات قابل تکثیر وجود داشته باشد.
پ) چنین وضعیتی دارای تنوع باشد.
ت) این موجودات به وسیله قابلیت‌هایی در زندگی از هم جدا شوند.
در طبیعت، گونه‌های متفاوتی از یک موجود وجود دارند که این تفاوت‌ها در کروموزوم‌های این موجودات ظاهر می‌شود و باعث تنوع در ساختار و رفتار این موجودات می‌شود.
این تنوع ساختار و رفتار به نوبه خود بر زاد و ولد تأثیر می‌گذارد. موجوداتی که قابلیت‌ها و توانایی بیشتری برای انجام فعالیت‌ها در محیط دارند (موجودات متکامل‌تر)، دارای نرخ زاد و ولد بالاتری خواهند بود و طبعاً موجوداتی که سازگاری کمتری با محیط دارند، از نرخ زاد و ولد پایین‌تری برخوردار خواهند بود. بعد از چند دوره زمانی و گذشت چند نسل، جمعیت تمایل دارد که موجوداتی را بیشتر در خود داشته باشد که کروموزوم‌هایشان با محیط اطراف سازگاری بیشتری دارد. در طی زمان، ساختار افراد جامعه به علت انتخاب طبیعی تغییر می‌کند و این نشانه تکامل جمعیت است [1,2,3] .
الگوریتم آنیلینگ شبیه‌سازی شده توسط متروپولیس و همکاران در سال 1953 پیشنهاد شده و جهت بهینه‌سازی در سال 1983 مورد بازبینی قرار گرفته است. این روش در مسائل تاکسی تلفنی کاربرد دارد.
الگوریتم آنیلینگ شبیه‌سازی شده در شکل عمومی، بر اساس شباهت میان سرد شدن جامدات مذاب و حل مسائل بهینه‌سازی ترکیبی به وجود آمده است. در فیزیک مواد فشرده، گرم و سرد کردن فرایندی است فیزیکی که طی آن یک ماده جامد در ظرفی حرارت داده می‌شود تا مایع شود؛ سپس حرارت آن بتدریج کاهش می‌یابد. بدین ترتیب تمام ذرات فرصت می‌یابند تا خود را در پایین‌ترین سطح انرژی منظم کنند. چنین وضعی در شرایطی ایجاد می‌شود که گرمادهی کافی بوده و سرد کردن نیز به آهستگی صورت گیرد. جواب حاصل از الگوریتم گرم و سرد کردن شبیه‌سازی شده، به جواب اولیه وابسته نیست و می‌توان توسط آن جوابی نزدیک به جواب بهینه به دست آورد. حد بالایی زمان اجرای الگوریتم نیز قابل تعیین است. بنابراین الگوریتم گرم و سرد کردن شبیه‌سازی شده، الگوریتمی است تکراری که اشکالات روش‌های عمومی مبتنی بر تکرار را ندارد.
در روش آنیلینگ شبیه‌سازی شده، به صورت پی در پی از جواب جاری به یکی از همسایه‌های آن انتقال صورت می‌گیرد. این سازوکار توسط زنجیره مارکوف به صورت ریاضی قابل توصیف است. در این روش، یک مجموعه آزمون انجام می‌گیرد؛ این آزمون‌ها به نحوی است که نتیجه هر یک به نتیجه آزمون قبل وابسته است. در روش آنیلینگ شبیه‌سازی شده، منظور از یک آزمون، انتقال به نقطه جدید است و روشن است که نتیجه انتقال به نقطه جدید تنها وابسته به مشخصات جواب جاری است.
روش جستجوی همسایه و روش آنیلینگ شبیه‌سازی شده، هر دو روش‌های تکراری هستند. در الگوریتم آنیلینگ شبیه‌سازی شده، هر بار که شاخص کنترل‌کننده به مقدار نهایی خود می‌رسد، در حقیقت یک عملیات تکراری انجام شده است. در الگوریتم جستجوی همسایه، هنگامی که تعداد تکرارها به سمت بی‌نهایت میل می‌کند، روش به جواب بهینه نزدیک می‌شود. اما عملکرد الگوریتم آنیلینگ شبیه‌سازی شده سریع‌تر است [4] .
دیکاسترو و تیمیس، اولین الگوریتم های ایمنی مصنوعی را در سال 1986 طراحی کردند. به طور کلی، سیستم‌های ایمنی مصنوعی جزء الگوریتم های الهام گرفته شده از بیولوژی هستند. این نوع الگوریتم‌ها، الگوریتم هایی کامپیوتری هستند که اصول و ویژگی‌های آنها نتیجه بررسی در خواص وفقی و مقاومت نمونه‌ها بیولوژیکی است. سیستم ایمنی مصنوعی نوعی الگو برای یادگیری ماشین است. یادگیری ماشین، توانایی کامپیوتر برای انجام یک کار با یادگیری داده‌ها یا از روی تجربه است. سیستم ایمنی مصنوعی توسط کاسترو به این صورت تعریف شده است:
سیستم های وفقی که با الهام از ایمونولوژی نظری و توابع، اصول و مدل های ایمنی سیستم بدن انسان مشاهده شده به وجود آمده‌اند و برای حل مسائل مورد استفاده قرار می‌گیرند [5] .
الگوریتم جستجوی ممنوعه برای اولین بار در سال 1986 توسط گلووِر معرفی شد. روش جستجوی ممنوع همانند روش آنیلینگ شبیه‌سازی شده بر اساس جستجوی همسایه بنا شده است. در این روش عملکرد حافظه انسان شبیه‌سازی شده است. حافظه انسان با به کارگیری ساختمانی مؤثر و در عین حال ساده از اطلاعات، آنچه را در قبل رؤیت شده، ذخیره می‌کند. این مرکز همچنین فهرستی از حرکات منع شده را تنظیم می‌کند و این فهرست همواره بر اساس آخرین جستجوها منظم می‌شود. این روش از انجام هر گونه عملیات مجدد و تکراری جلوگیری می‌کند.
شکل نوین جستجوی ممنوع توسط گلوور مطرح شده است. روش جستجوی مبتنی بر منع، با ایجاد تغییری کوچک در روش جستجوی همسایه به وجود می‌آید. هدف این روش آن است که بخش‌هایی از مجموعه جواب که پیش از این بررسی نشده است، مد نظر قرار گیرد. بدین منظور حرکت به جواب‌هایی که اخیراً جستجو شده، ممنوع خواهد بود.
ساختار کلی روش جستجوی ممنوع بدین صورت است که ابتدا یک جواب اولیه امکان‌پذیر انتخاب می‌شود؛ سپس برای جواب مربوط، بر اساس یک معیار خاص مجموعه‌ای از جواب‌های همسایه امکان‌پذیر در نظر گرفته می‌شود.
در گام بعد، پس از ارزیابی جواب‌های همسایه تعیین شده، بهترین آنها انتخاب می‌شود و جابه‌جایی از جواب جاری به جواب همسایه انتخابی صورت می‌گیرد. این فرایند به همین ترتیب تکرار می‌شود تا زمانی که شرط خاتمه تحقق یابد.
در روش جستجوی ممنوع، فهرستی وجود دارد که جابه‌جایی‌های منع شده را نگهداری می‌کند و به فهرست تابو معروف است و کاربرد اصلی آن، پرهیز از همگرا شدن به جواب‌های بهینه محلی است. به عبارت دیگر، به کمک فهرست تابو جابه‌جایی به جواب‌هایی که اخیراً جستجو شده‌اند، ممنوع خواهد شد. فقط بخش‌هایی از مجموعه جواب که پیش از این مورد بررسی قرار نگرفته، مد نظر خواهند بود. در واقع جابه‌جایی از جواب جاری به جواب همسایه امکان‌پذیر زمانی انجام می‌شود که در فهرست تابو قرار نداشته باشد. در غیر این صورت، جواب همسایه دیگری که در ارزیابی جواب‌های همسایه در رده بعدی قرار گرفته است، انتخاب شده و جابه‌جایی به آن صورت می‌گیرد.
در روش جستجوی ممنوع بعد از هر جابه‌جایی، فهرست تابو بهنگام می‌شود، به نحوی که جابه‌جایی جدید به آن فهرست اضافه شده و جابه‌جایی که تا n تکرار مشخص در فهرست بوده است، از آن حذف می‌شود. نحوه انتخاب می‌تواند با توجه به شرایط و نوع مسأله متفاوت باشد .[6]
الگوریتم بهینه‌سازی کلونی مورچه‌ها در سال 1991 توسط دوریگو و همکاران پیشنهاد شده است که در حل مسأله فروشنده دوره‌گرد و مسائل تخصیص چندوجهی کاربرد دارد. الگوریتم بهینه ‌سازی کلونی مورچه‌ها از عامل‌های ساده‌ای که مورچه نامیده می‌شوند، استفاده می‌کند تا به صورت تکراری جواب‌هایی تولید کند. مورچه‌ها می توانند کوتاه‌ترین مسیر از یک منبع غذایی به لانه را با بهره‌گیری از اطلاعات فرمونی پیدا کنند. مورچه‌ها در هنگام راه رفتن، روی زمین فرمون می‌ریزند و با بو کشیدن فرمون ریخته شده بر روی زمین راه را دنبال می‌کنند؛ چنانچه در طی مسیر به سوی لانه به یک دوراهی برسند، از آن جایی که هیچ اطلاعی درباره راه بهتر ندارند، راه را به تصادف برمی‌گزینند. انتظار می‌رود به طور متوسط نیمی از مورچه‌ها مسیر اول و نیمی دیگر مسیر دوم را انتخاب کنند.
فرض می‌شود که تمام مورچه‌ها با سرعت یکسان مسیر را طی کنند. از آنجا که یک مسیر کوتاه‌تر از مسیر دیگر است، مورچه‌های بیشتری از آن می‌گذرند و فرمون بیشتری بر روی آن انباشته می‌شود. بعد از مدت کوتاهی مقدار فرمون روی دو مسیر به اندازه‌ای می رسد که روی تصمیم مورچه‌های جدید برای انتخاب مسیر بهتر تأثیر می‌گذارد. از این به بعد، مورچه‌های جدید با احتمال بیشتری ترجیح می‌دهند از مسیر کوتاه‌تر استفاده کنند، زیرا در نقطه تصمیم‌گیری مقدار فرمون بیشتری در مسیر کوتاه‌تر مشاهده می‌کنند. بعد از مدت کوتاهی تمام مورچه‌ها این مسیر را انتخاب خواهند کرد .[7]
الگوریتم اجتماع ذرات که به آن الگوریتم پرندگان نیز گفته می شود برای اولین بار توسط کندی و ابرهارت در سال 1995 مطرح شد. این الگوریتم محاسبه ای تکاملی الهام گرفته از طبیعت و براساس تکرار می‌باشد. منبع الهام این الگوریتم، رفتار اجتماعی حیوانات، همانند حرکت دسته جمعی پرندگان و ماهی‌ها بود. الگوریتم اجتماع ذرات نیز با یک ماتریس جمعیت تصادفی اولیه، شروع می‌شود. الگوریتم اجتماع ذرات از تعداد مشخصی از ذرات تشکیل می شود که به طور تصادفی، مقدار اولیه می گیرند. برای هر ذره دو مقدار وضعیت و سرعت، تعریف می شود که به ترتیب با یک بردار مکان و یک بردار سرعت، مدل می‌شوند. این ذرات، بصورت تکرارشونده ای در فضای n‌بعدی مسئله حرکت می کنند تا با محاسبه مقدار بهینگی به عنوان یک ملاک سنجش، گزینه‌های ممکن جدید را جستجو کنند.[8,9]
تکامل تفاضلی یک روش جست و جوی احتمالی بر پایه جمعیت است که در سال 1995 توسط ستورن و پرایس ابداع گردید. تفاضل تکاملی در حالی که تشابهاتی با سایر الگوریتم های تکاملی دارد اما استفاده از اطلاعات فاصله و جهت از جمعیت فعلی برای پیش بردن عملیات جست و جو آن را از سایر الگوریتم های تکاملی متمایز کرده است. الگوریتم تکامل تفاضلی اولیه برای مسائل فضای پیوسته به وجود آمدند ولی در ادامه برای مسائل فضای گسسته نیز تعمیم یافتند .[10]
الگوریتم جستجوی هارمونی توسط گیم و همکاران در سال 2001 معرفی شد. بعد ها در سال 2007 این الگوریتم توسعه داده شد. این الگوریتم با الهام از نحوه شکل گیری و چگونگی عملکرد یک ارکستر موسیقی به دنبال راه حل بهینه و یا به عبارت ملموس تر، بهترین هماهنگی بین اجزا دخیل در راهبری یک پروسه است. همان طور که نوازنده ها در یک ارکستر قطعات موسیقایی را می نوازند تا از بین آنها بهترین ترکیب، محصول نهایی را پدید آورد الگوریتم هارمونی نیز از بررسی نتیجه عملکرد اجزا به دنبال هماهنگی مطلوب است . الگوریتم هارمونی برای حل مسائل به دنبال یافتن بهترین مسیر است تا بوسیله آن هزینه توابع محاسباتی را کاهش دهد (کوتاهتر) نماید.[11]
روش جستجوی فاخته در سال 2009 توسط یانگ  و دب پیشنهاد شده است. این الگوریتم یک روش بهینه‌سازی فرااکتشافی است که رویکردی تکاملی در جستجوی راه‌حل بهینه دارد. این روش از رفتار جالب توجه گونه‌هایی از پرنده‌ی فاخته در پرورش تخم الهام گرفته است و آن را با پرواز لووی که نوعی گشت تصادفی است ترکیب می‌کند. برخی از گونه‌های فاخته به جای ساختن لانه، تخم‌های خود را در لانه‌ی پرنده‌ای از گونه‌های دیگر می‌گذارند و آن‌ها را با تقلید از شکل تخم‌ها و جوجه‌های پرنده‌ی میزبان وادار به مشارکت در بقای نسل خود می کنند.[12]
الگوریتم کرم شب تاب در سال 2009 توسط یانگ معرفی شد. دو کاربرد اساسی  پرتوتابی حشره های شب تاب جفت‌یابی و جذب طعمه است. به علاوه، پرتوتابی ممکن است به صورت مکانیزم هشداری برای محافظت‌ به کار رود. پرتوتابی ریتمیک، نرخ چشمک ها و مدت هر یک از آن ها، سیستم ارتباط جفت‌ها با یکدیگر را شکل می دهد. ماده‌ها به الگوی یکسان نرها در گونه‌های یکسان پاسخ می دهند، در حالی که در تعدادی از گونه‌ها حشره های شب‌تاب ماده می توانند الگوی تابشی جفت‌های گونه‌های دیگر را نیز تقلید کنند و با فریب حشره های شب‌تاب نر که ممکن است اشتباه کنند، آن‌ها را به سمت خود جذب و شکار کنند. شدت تابش نور می تواند به طریقی فرموله شود که با تابع هدف در ارتباط باشد و بدین صورت مقدار این تابع بهینه شود.[13,14]
الگوریتم خفاش نیز در سال 2010 توسط یانگ معرفی شد. این الگوریتم بر مبنای زندگی خفاش ها توسعه داده شده است.[15]
الگوریتم جستجوی گرانشی در سال 2009 توسط راشدی و همکاران معرفی شده است. این الگوریتم که با الهام از قانون گرانش طبیعت، پیشنهاد شده است یک روش جدید از دسته الگوریتم های جستجو ابتکاری میباشد. در این روش عامل های جستجو، اجرامی هستند که با توجه به نیروی جاذبه ای که از سایر اجرام به آنها وارد می شود، درکی از فضای جستجو پیدا می کنند و با توجه به این درک به جستجوی فضای اطراف خود می گردند .[16]
الگوریتم کلونی زنبور عسل در سال 2007 توسط کارابوگ و باشتورگ معرفی شده است. الگوریتم زنبور عسل هر نقطه را در فضای پارامتری، متشکل از پاسخ‌های ممکن به عنوان منبع غذا تحت بررسی قرار می دهد. زنبورهای دیده‌بان، کارگزاران شبیه‌سازی شده، به صورت تصادفی فضای پاسخها را ساده می کنند و به وسیلهی تابع شایستگی کیفیت موقعیتهای بازدید شده را گزارش می دهند. جواب‌های ساده شده رتبه بندی می‌شوند و دیگر زنبورها نیروهای تازهای هستند که فضای پاسخ‌ها را در پیرامون خود برای یافتن بالاترین رتبه محل‌ها جستجو می کنند که گلزار نامیده می‌شود. الگوریتم به صورت گزینشی دیگر گلزارها را برای یافتن نقطهی بیشینهی تابع شایستگی جستجو می‌کند.[17,18]
الگوریتم رقابت استعماری در سال 2007 توسط اتش پز و همکاران معرفی شده است. روشی در حوزه محاسبات تکاملی است که به یافتن پاسخ بهینه مسائل مختلف بهینه سازی می‌پردازد. این الگوریتم با مدلسازی ریاضی فرایند تکامل اجتماعی، سیاسی، الگوریتمی برای حل مسائل ریاضی بهینه سازی ارائه می دهد. الگوریتم رقابت استعماری نیز مجموعه اولیه ای از جوابهای احتمالی را تشکیل می دهد. الگوریتم رقابت استعماری با روند خاصی جوابهای اولیه (کشور ها) را به تدریج بهبود داده و در نهایت جواب مناسب مسئله بهینه سازی (کشور مطلوب) را در اختیار می گذارد. پایه‌های اصلی این الگوریتم را سیاست همسان سازی، رقابت استعماری و انقلاب تشکیل می دهند. این الگوریتم با تقلید از روند تکامل اجتماعی، اقتصادی و سیاسی کشورها و با مدلسازی ریاضی بخشهایی از این فرایند، عملگرهایی را در قالب منظم به صورت الگوریتم ارائه می دهد که می توانند به حل مسائل پیچیده بهینه سازی کمک کنند. در واقع این الگوریتم جوابهای مسئله بهینه سازی را در قالب کشورها نگریسته و سعی می‌کند در طی فرایندی تکرار شونده این جواب‌ها را رفته رفته بهبود داده و در نهایت به جواب بهینه مسئله برساند.[19,20,21]

متن کامل در سایت امید فایل 

الگوریتم بهینه سازی فاخته در سال 2011 توسط رجبیون معرفی شده است. همانند سایر الگوریتمهای تکاملی این الگوریتم هم با یک جمعیت اولیه کار خود را شروع می کند. این جمعیت از فاخته ها، تعدادی تخم دارند که آنها را در لانه تعدادی پرنده ی میزبان خواهند گذاشت. تعدادی از این تخم ها که شباهت بیشتری به تخم های پرنده میزبان دارند شانس بیشتری برای رشد و تبدیل شدن به فاخته بالغ خواهند داشت. سایر تخم ها توسط پرنده میزبان شناسایی شده و از بین می روند. میزان تخم های رشد کرده مناسب بودن لانه های آن منطقه را نشان می دهند. موقعیتی که در آن بیشترین تعداد تخمها نجات یابند پارامتری خواهد بود که الگوریتم قصد بهینه سازی آن را دارد. فاخته ها برای بیشینه کردن نجات تخم های خود دنبال بهترین منطقه می گردند. پس از آنکه جوجه ها از تخم در آمدند و تبدیل به فاخته بالغ شدند، جوامع و گروه هایی تشکیل می دهند. هر گروه منطقه سکونت خود را برای زیست دارد. تمام گروهها به سمت بهترین منطقه موجود فعلی مهاجرت می کنند. هر گروه در منطقه ای نزدیک بهترین موقعیت فعلی ساکن می شود. با در نظر گرفتن تعداد تخمی که هر فاخته خواهد گذاشت و همچنین فاصله فاخته ها از منطقه بهینه فعلی برای سکونت تعدادی شعاع تخم گذاری محاسبه شده و شکل می گیرد. سپس فاخته ها شروع به تخم گذاری تصادفی در لانه هایی داخل شعاع تخم گذاری خود می کنند. این پروسه تا رسیدن به بهترین محل برای تخم گذاری  (منطقه با بیشترین سود) ادامه می یابد. این محل بهینه جایی است که بیشترین تعداد فاخته ها در آن گرد می آیند.[22]
الگوریتم دسته‌ی ماهی‌های مصنوعی یکی از الگوریتم‌های هوش جمعی است که بر اساس جمعیت و جستجوی تصادفی کار می‌کند. این الگوریتم در سال 2003 توسط لی ارائه گردید. اساس کار این الگوریتم از روی رفتارهای اجتماعی ماهی‌ها برگرفته شده و بر مبنای جستجوی تصادفی، جمعیت و رفتارگرایی کار می‌کند. این الگوریتم دارای خصوصیاتی از جمله سرعت همگرایی بالا، حساس نبودن به مقادیر اولیه‌ی ماهی‌های مصنوعی، انعطاف‌پذیری و تحمل‌پذیری خطا می باشد که آن را برای حل مسائل بهینه‌سازی قابل قبول می‌کند. اساس کار این الگوریتم بر پایه‌ی توابعی است که از رفتارهای اجتماعی دسته‌ی ماهی‌ها در طبیعت برگرفته شده‌اند. در دنیای زیر آب، ماهی‌ها می توانند مناطقی را پیدا کنند که دارای غذای بیشتری است، که این امر با جستجوی فردی یا گروهی ماهی‌ها محقق می‌شود. مطابق با این ویژگی، مدل ماهی مصنوعی با رفتارهای حرکت آزادانه، جستجوی غذا، حرکت گروهی و دنباله‌روی ارائه شده است که به وسیله‌ی آنها فضای مسئله جستجو می‌شود.[23]
2-3- جمع بندی
در این فصل به مرور الگوریتم های فرا ابتکاری پرداخته شد. اکثر الگوریتم ها در مرحله اول خود جمعیت تصادفی تولید می کنند. سپس در تکرار های بعد آن جمعیت اولیه را حرکت می دهند. تفاوت الگوریتم ها در همین نوع حرکت دادن جواب ها است. در الگوریتم ژنتیک به وسیله اپراتور های تقاطع و جهش، در الگوریتم جستجوی ممنوعه به وسیله جستجوی تپه نوردی و لیست ممنوعه، در الگوریتم شبیه سازی تبرید به وسیله جستجوی تبه نوردی و تابع احتمالی بولتزمان و برای الگوریتم های دیگر به روش های گوناگون این عمل صورت می گیرد. در انتها نیز همین حرکت هدایت شده جواب ها باعث پیدا شدن جواب بهتر می شود.
فصل سوم
زمینه های علمی تحقیق
3-1- مقدمه
بهینه‌سازی یک فعالیت مهم و تعیین‌کننده در طراحی ساختاری است. طراحان زمانی قادر خواهند بود طرح‌های بهتری تولید کنند که بتوانند با روش‌های بهینه‌سازی در صرف زمان و هزینه طراحی صرفه‌جویی نمایند. بسیاری از مسائل بهینه‌سازی در مهندسی، طبیعتاً پیچیده‌تر و مشکل‌تر از آن هستند که با روش‌های مرسوم بهینه‌سازی نظیر روش برنامه‌ریزی ریاضی و نظایر آن قابل حل باشند.
3-2- مسائل بهینه سازی
هدف از بهینه‌سازی یافتن بهترین جواب قابل قبول، با توجه به محدودیت‌ها و نیازهای مسأله است. برای یک مسأله، ممکن است جواب‌های مختلفی موجود باشد که برای مقایسه آنها و انتخاب جواب بهینه، تابعی به نام تابع هدف تعریف می‌شود. انتخاب این تابع به طبیعت مسأله وابسته است. به عنوان مثال، زمان سفر یا هزینه از جمله اهداف رایج بهینه‌سازی شبکه‌های حمل و نقل می‌باشد. به هر حال، انتخاب تابع هدف مناسب یکی از مهمترین گام‌های بهینه‌سازی است. گاهی در بهینه‌سازی چند هدف به طور همزمان مد نظر قرار می‌گیرد؛ این گونه مسائل بهینه‌سازی را که دربرگیرنده چند تابع هدف هستند، مسائل چند هدفی می‌نامند. ساده‌ترین راه در برخورد با این گونه مسائل، تشکیل یک تابع هدف جدید به صورت ترکیب خطی توابع هدف اصلی است که در این ترکیب میزان اثرگذاری هر تابع با وزن اختصاص یافته به آن مشخص می‌شود. هر مسأله بهینه‌سازی دارای تعدادی متغیر مستقل است که آنها را متغیرهای طراحی می‌نامند که با بردار n بعدی x نشان داده می‌شوند. هدف از بهینه‌سازی تعیین متغیرهای طراحی است، به گونه‌ای که تابع هدف کمینه یا بیشینه شود.
مسائل مختلف بهینه‌سازی به دو دسته زیر تقسیم می‌شود:
الف) مسائل بهینه‌سازی بی‌محدودیت: در این مسائل هدف، بیشینه یا کمینه کردن تابع هدف بدون هر گونه محدودیتی بر روی متغیرهای طراحی می‌باشد.
ب) مسائل بهینه‌سازی با محدودیت: بهینه‌سازی در اغلب مسائل کاربردی، با توجه به محدودیت‌هایی صورت می‌گیرد؛ محدودیت‌هایی که در زمینه رفتار و عملکرد یک سیستم می‌باشد و محدودیت‌های رفتاری و محدودیت‌هایی که در فیزیک و هندسه مسأله وجود دارد، محدودیت‌های هندسی یا جانبی نامیده می‌شوند.
معادلات معرف محدودیت‌ها ممکن است به صورت مساوی یا نامساوی باشند که در هر مورد، روش بهینه‌سازی متفاوت می‌باشد. به هر حال محدودیت‌ها، ناحیه قابل قبول در طراحی را معین می‌کنند.
به طور کلی مسائل بهینه‌سازی با محدودیت را می‌توان به صورت زیر نشان داد:
Minimize or Maximize : F(X) (3.1)
Subject to : I = 1,2,3,…,p
j = 1,2,3,…,q
k = 1,2,3,…,n
که در آن X={ بردار طراحی و رابطه‌های (3.1) به ترتیب محدودیت‌های نامساوی، مساوی و محدوده قابل قبول برای متغیرهای طراحی می‌باشند.
3-3- بررسی روش‌های جستجو و بهینه‌سازی
پیشرفت کامپیوتر در طی پنجاه سال گذشته باعث توسعه روش‌های بهینه‌سازی شده، به طوری که دستورهای متعددی در طی این دوره تدوین شده است. در این بخش، مروری بر روش‌های مختلف بهینه‌سازی ارائه می‌شود.
شکل 3-1 روش‌های بهینه‌سازی را در چهار دسته وسیع دسته‌بندی می‌کند. در ادامه بحث، هر دسته از این روش‌ها مورد بررسی قرار می‌گیرند.

شکل 3-1 طبقه‌بندی انواع روش‌های بهینه‌سازی
3-3-1- روش‌های شمارشی
در روش‌های شمارشی، در هر تکرار فقط یک نقطه متعلق به فضای دامنه تابع هدف بررسی می‌شود. این روش‌ها برای پیاده‌سازی، ساده‌تر از روش‌های دیگر می‌باشند؛ اما به محاسبات قابل توجهی نیاز دارند. در این روش‌ها سازوکاری برای کاستن دامنه جستجو وجود ندارد و دامنه فضای جستجو شده با این روش خیلی بزرگ است. برنامه‌ریزی پویا مثال خوبی از روش‌های شمارشی می‌باشد. این روش کاملاً غیرهوشمند است و به همین دلیل امروزه به ندرت به تنهایی مورد استفاده قرار می‌گیرد.
3-3-2- روش‌های محاسباتی
این روش‌ها از مجموعه شرایط لازم و کافی که در جواب مسأله بهینه‌سازی صدق می‌کند، استفاده می‌کنند. وجود یا عدم وجود محدودیت‌های بهینه‌سازی در این روش‌ها نقش اساسی دارد. به همین علت، این روش‌ها به دو دسته روش‌های با محدودیت و بی‌محدودیت تقسیم می‌شوند.
روش‌های بهینه‌سازی بی‌محدودیت با توجه به تعداد متغیرها شامل بهینه‌سازی توابع یک متغیره و چند متغیره می‌باشند.
روش‌های بهینه‌سازی توابع یک متغیره، به سه دسته روش‌های مرتبه صفر، مرتبه اول و مرتبه دوم تقسیم می‌شوند. روش‌های مرتبه صفر فقط به محاسبه تابع هدف در نقاط مختلف نیاز دارد؛ اما روش‌های مرتبه اول از تابع هدف و مشتق آن و روش‌های مرتبه دوم از تابع هدف و مشتق اول و دوم آن استفاده می‌کنند. در بهینه‌سازی توابع چند متغیره که کاربرد بسیار زیادی در مسائل مهندسی دارد، کمینه‌سازی یا بیشینه‌سازی یک کمیت با مقدار زیادی متغیر طراحی صورت می‌گیرد.
یک تقسیم‌بندی، روش‌های بهینه‌سازی با محدودیت را به سه دسته برنامه‌ریزی خطی، روش‌های مستقیم و غیرمستقیم تقسیم می‌کند. مسائل با محدودیت که توابع هدف و محدودیت‌های آنها خطی باشند، جزو مسائل برنامه‌ریزی خطی قرار می‌گیرند. برنامه‌ریزی خطی شاخه‌ای از برنامه‌ریزی ریاضی است و کاربردهای فیزیکی، صنعتی و تجاری بسیاری دارد.
در روش‌های مستقیم، نقطه بهینه به طور مستقیم جستجو شده و از روش‌های بهینه‌یابی بی‌محدودیت استفاده نمی‌شود. هدف اصلی روش‌های غیرمستقیم استفاده از الگوریتم‌های بهینه‌سازی بی‌محدودیت برای حل عمومی مسائل بهینه‌سازی با محدودیت می‌باشد.
در اکثر روش‌های محاسباتی بهینه‌یابی، از گرادیان تابع هدف برای هدایت جستجو استفاده می‌شود. اگر مثلاً به علت ناپیوستگی تابع هدف، مشتق آن قابل محاسبه نباشد، این روش‌ها اغلب با مشکل روبه‌رو می‌شوند.
3-3-3- روش‌های ابتکاری و فرا ابتکاری (جستجوی تصادفی)
یک روش ناشیانه برای حل مسائل بهینه‌سازی ترکیبی این است که تمامی جواب‌های امکان‌پذیر در نظر گرفته شود و توابع هدف مربوط به آن محاسبه شود و در نهایت، بهترین جواب انتخاب گردد. روشن است که شیوه شمارش کامل، نهایتاً به جواب دقیق مسأله منتهی می‌شود؛ اما در عمل به دلیل زیاد بودن تعداد جواب‌های امکان‌پذیر، استفاده از آن غیرممکن است. با توجه به مشکلات مربوط به روش شمارش کامل، همواره بر ایجاد روش‌های مؤثرتر و کاراتر تأکید شده است. در این زمینه، الگوریتم‌های مختلفی به وجود آمده است که مشهورترین نمونه آنها، روش سیمپلکس برای حل برنامه‌های خطی و روش شاخه و کرانه برای حل برنامه‌های خطی با متغیرهای صحیح است. برای مسائلی با ابعاد بزرگ، روش سیمپلکس از کارایی بسیار خوبی برخوردار است، ولی روش شاخه و کرانه کارایی خود را از دست می‌دهد و عملکرد بهتری از شمارش کامل نخواهد داشت. به دلایل فوق، اخیراً تمرکز بیشتری بر روش‌های ابتکاری یا فرا ابتکاری یا جستجوی تصادفیصورت گرفته است.
روش‌های جستجوی ابتکاری، روش‌هایی هستند که می‌توانند جوابی خوب (نزدیک به بهینه) در زمانی محدود برای یک مسأله ارائه کنند. روش‌های جستجوی ابتکاری عمدتاً بر مبنای روش‌های شمارشی می‌باشند، با این تفاوت که از اطلاعات اضافی برای هدایت جستجو استفاده می‌کنند. این روش‌ها از نظر حوزه کاربرد، کاملاً عمومی هستند و می‌توانند مسائل خیلی پیچیده را حل کنند. عمده این روش‌ها، تصادفی بوده و از طبیعت الهام گرفته شده‌اند.
3-4- مسائل بهینه‌سازی ترکیبی
در طول دو دهه گذشته، کاربرد بهینه‌سازی در زمینه‌های مختلفی چون مهندسی صنایع، برق، کامپیوتر، ارتباطات و حمل و نقل گسترش یافته است.
بهینه‌سازی خطی و غیرخطی (جستجو جهت یافتن مقدار بهینه تابعی از متغیرهای پیوسته)، در دهه پنجاه و شصت از اصلی‌ترین جنبه‌های توجه به بهینه‌سازی بود.
بهینه‌سازی ترکیبی عبارت است از جستجو برای یافتن نقطه توابع با متغیرهای گسسته و در دهه 70 نتایج مهمی در این زمینه به دست آمد. امروزه بسیاری از مسائل بهینه‌سازی ترکیبی (مانند مسأله فروشنده دوره‌گرد) که اغلب از جمله مسائل NP-hard هستند، به صورت تقریبی (نه به طور دقیق) در کامپیوترهای موجود قابل حل می‌باشند.
به طور رسمی یک بهینه سازی ترکیبی A یک چهارتایی است به طوری که:
مجموعه نمونه هاست.
برای یک نمونه داده شده، مجموعه راه حل های امکان پذیر است.
برای یک مورد داده شده و راه حل ممکن برای ، اندازه را مشخص می کند که معمولاً یک عدد حقیقی مثبت است.
هدف تابع است که یا برابر کمینه و یا بیشینه است.
هدف این است که برای یک نمونه ، یک راه حل بهینه پیدا کنیم که یک راه حل ممکن است با این شرط که
(2.3)
برای هر مسأله بهینه سازی ترکیبی، یک مسأله تصمیم متناظر وجود دارد که می پرسد ببیند آیا یک راه حل ممکن برای مقدار خاص وجود دارد یا نه. به عنوان مثال یک گراف وجود دارد که شامل رئوس و است. یک مسأله بهینه سازی ممکن است «یافتن یک مسیر از به که از کمترین یال ها بگذرد» باشد. این مسأله ممکن است یک جواب مثلاً ۴ داشته باشد. یک مسأله تصمیم متناظر این خواهد بود که «آیا یک مسیر از به با استفاده از 10 یال یا کمتر وجود دارد؟» این مسأله با یک بله یا خیر ساده جواب داده می شود. در زمینه الگوریتم های تخمین، الگوریتم ها برای مسائل سخت برای یافتن راه حل های نزدیک بهینه طراحی می شوند. بنابراین یک نسخه معمول تصمیم، یک توصیف ناکافی از مسأله است زیرا فقط راه حل های قابل قبول را مشخص می کند. اگرچه می توانیم مسائل تصمیم مناسبی مطرح کنیم، این مسائل دیگر بیشتر به طور طبیعی، یک مسأله بهینه سازی می شوند.
3-5- روشهای حل مسائل بهینه‌سازی ترکیبی
روشن است که شیوه شمارش کامل، نهایتاً به جواب دقیق مسأله منجر می‌شود؛ اما در عمل به دلیل زیاد بودن تعداد جواب‌های امکان‌پذیر، استفاده از آن بی‌نتیجه است. برای آنکه مطلب روشن شود، مسأله مشهور فروشنده دوره‌گرد (TSP) را در نظر می‌گیریم.
این مسأله یکی از مشهورترین مسائل در حیطه بهینه‌سازی ترکیبی است که بدین شرح می باشد:
تعیین مسیر حرکت یک فروشنده بین N شهر به گونه‌ای که از هر شهر تنها یکبار بگذرد و طول کل مسیر به حداقل برسد، بسیار مطلوب است. تعداد کل جواب‌ها برابر است با . فرض کنید کامپیوتری موجود است که می‌تواند تمام جواب‌های مسأله با بیست شهر را در یک ساعت بررسی کند. بر اساس آنچه آورده شد، برای حل مسأله با 21 شهر، 20 ساعت زمان لازم است و به همین ترتیب، زمان لازم برای مسأله 22 شهر، 5/17 روز و برای مسأله 25 شهر، 6 قرن ا ست!
به دلیل همین رشد نمایی زمان محاسبه، شمارش کامل روشی کاملاً نامناسب است.
همان طور که گفته شد، با توجه به مشکلات مربوط به روش شمارش کامل، همواره بر ایجاد روش‌های مؤثرتر و کاراتر تأکید شده است. در این زمینه، الگوریتم‌های مختلفی به وجود آمده که مشهورترین آنها، الگوریتم سیمپلکس برای حل برنامه‌های خطی و روش شاخه و کران برای حل برنامه‌های خطی با اعداد صحیح است.
بنابراین در سال‌های اخیر توجه بیشتری بر روش‌های ابتکاری برگرفته از طبیعت که شباهت‌هایی با سیستم‌های اجتماعی یا طبیعی دارد، صورت گرفته است و نتایج بسیار خوبی در حل مسائل بهینه‌سازی ترکیبی NP-hard به دنبال داشته است. در این الگوریتم‌ها هیچ ضمانتی برای آنکه جواب به دست آمده بهینه باشد، وجود ندارد و تنها با صرف زمان بسیار می‌توان جواب نسبتاً دقیقی به دست آورد؛ در حقیقت با توجه به زمان صرف شده، دقت جواب تغییر می‌کند.
3-5-1- روش های ابتکاری
برای روش‌های ابتکاری نمی‌توان تعریفی جامع ارائه کرد. با وجود این، در اینجا کوشش می‌شود تعریفی تا حد امکان مناسب برای آن عنوان شود:
روش جستجوی ابتکاری، روشی است که می‌تواند جوابی خوب (نزدیک به بهینه) در زمانی محدود برای یک مسأله ارائه کند. هیچ تضمینی برای بهینه بودن جواب وجود ندارد و متأسفانه نمی‌توان میزان نزدیکی جواب به دست آمده به جواب بهینه را تعیین کرد.
در اینجا مفاهیم برخی از روش‌های اصلی ابتکاری بدون وارد شدن به جزییات معرفی می‌شود.
3-5-1-1- آزاد‌سازی
آزادسازی یکی از روش‌های ابتکاری در بهینه‌سازی است که ریشه در روش‌های قطعی بهینه‌سازی دارد. در این روش، ابتدا مسأله به شکل یک مسأله برنامه‌ریزی خطی عدد صحیح یا مختلط (و گاهی اوقات کمی غیر خطی)، فرموله می‌شود. سپس با برداشتن محدودیت‌های عدد صحیح بودن، یک مسأله آزاد شده به دست آمده و حل می‌شود. یک جواب خوب (و نه لزوماً بهینه) برای مسأله اصلی می‌تواند از روند کردن جواب مسأله آزاد شده (برای رسیدن به یک جواب موجه نزدیک به جواب مسأله آزاد شده)، به دست آید؛ اگر چه روند کردن جواب برای رسیدن به یک جواب لزوماً کار آسانی نیست، اما در مورد بسیاری از مدل‌های معمول، به آسانی قابل انجام است.
3-5-1-2- تجزیه
بسیاری اوقات آنچه که حل یک مسأله را از روش‌های قطعی بسیار مشکل می‌کند، این است که بیش از یک مورد تصمیم‌گیری وجود دارد، مانند موقعیت ماشین‌آلات و تخصیص کار، تخصیص بار به وسائل نقلیه و مسیریابی. هر یک از این موارد تصمیم‌گیری ممکن است به تنهایی پیچیده نباشند، اما در نظر گرفتن همه آنها در یک مدل به طور همزمان، چندان آسان نیست. روش ابتکاری تجزیه می‌تواند در چنین مسائلی مفید واقع شود. در این روش، جواب به دو یا چند بخش (که فرض می‌شود از هم مستقل هستند) تجزیه شده و هر یک جداگانه حل می‌شوند؛ سپس یک روش برای هماهنگ کردن و ترکیب این جواب‌های جزیی و به دست آوردن یک جواب خوب ابتکاری، به کار گرفته می‌شود.
3-5-1-3- تکرار
یکی از روش‌های تجزیه، تکرار است. در این روش، مسأله به زیرمسأله‌های جداگانه‌ای تبدیل می‌شود و در هر زمان یکی از زیرمسأله‌ها با ثابت در نظر گرفتن متغیرهای تصمیم موجود در سایر زیرمسأله‌ها در بهترین مقدار شناخته شده‌شان، بهینه می‌شود؛ سپس یکی دیگر از زیرمسأله‌ها در نظر گرفته می‌شود و این عمل به طور متناوب تا رسیدن به یک جواب رضایت‌بخش، ادامه می‌یابد.
3-5-1-4- روش تولید ستون

پاسخ دهید

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