جمعیت[۱۱۵]: مجموعهای از کروموزومها را یک جمعیت میگویند.
نسل[۱۱۶]: هر تکرار از الگوریتم را یک نسل میگویند.
۶ - ساختار کلی الگوریتم ژنتیک
ساختار کلی یک الگوریتم ژنتیک را میتوان به صورت ذیل تصور کرد.
ابتدا پیش از هر چیز باید مکانیسمی برای تبدیل هر جواب مساله به یک کروموزوم تعریف کرد. پس از آن یک مجموعه از کروموزومها که در حقیقت مجموعهای از جوابهای مساله هستند به عنوان یک جمعیت آغازین[۱۱۷] تهیه میگردند. این مجموعه که اندازه آن دلخواه است و توسط کاربر تعریف میشود اغلب به صورت تصادفی ایجاد میگردد.
بعد از این مرحله باید با بکارگیری عملیات ژنتیک[۱۱۸] اقدام به ایجاد کروموزومهای جدید موسوم به نوزاد[۱۱۹]نمود. این عملیات به دو گونه عمده تقاطعی و جهشی تقسیمبندی میشوند. همچنین برای گزینش کروموزومهایی که باید نقش والدین را بازی کنند دو مفهوم نرخ تقاطعی[۱۲۰] و نرخجهشی[۱۲۱] کاربرد فراوان دارند که این دو نیز پیش از شروع الگوریتم توسط کاربر تعیین میشوند.
بعد از تولید یکسری کروموزوم جدید یا اولاد باید با بهره گرفتن از عمل تحول[۱۲۲] اقدام به انتخاب[۱۲۳]برازندهترین کروموزومها نمود. این فرایند که در فرایند انتخاب نمود مییابد گلچینکردن کروموزومهای برازنده در میان والدین و اولاد است به طوریکه تعداد کروموزومهای منتخب برابر با اندازه جمعیت اولیه باشد. فرایند انتخاب مبتنی بر مقدار برازندگی[۱۲۴] هر رشته است. در حقیقت فرایند ارزیابی[۱۲۵] محوریترین بحث در فرایند انتخاب است.
تا بدین مرحله یک تکرار یا یک نسل از الگوریتم طی شده است. الگوریتم بعد از طی چندین نسل به تدریج به سمت جواب بهینه همگرا میشود. شرط توقف مساله نیز طیکردن تعداد معینی تکرار است که پیش از آغاز الگوریتم توسط کاربر تعیین میشود.
ساختار کلی یک الگوریتم ژنتیک را میتوان به صورت ذیل بیان کرد ]۳۷[:
Procedure: Genetic Algorithm
Step 1: Set t:=0
Step 2: Generate initial population, p(t).
Step 3: Evaluate p(t) to creat fitness values
Step 4: While (not termination cordination) do:
Step 5: Recombine p(t) to yield c(t), selecting from p(t) according to the fitness values.
Step 6: Evaluate c(t)
Step 7: Generate p(t+1) from p(t) and c(t)
Step 8: Set t:=t+1
Step 9: End.
Step 10: Stop
P(t)= والدین نسل t
C(t)= نوزاد نسل t
۵-۳ : الگوریتم فراابتکاری شبیهسازی تبرید
هدف رویکرد شبیهسازی تبرید اجتناب از بهینه های موضعی با بهره گرفتن از تغییرات دما و استراتژی پذیرش جوابهای غیربهبود دهنده (جستجوی up/down-hill) در یک محیط گسسته میباشد. رویکرد شبیهسازی تبرید دارای مزایای برجسته متعددی نسبت به سایر رویکردهای فراابتکاری است که عبارتند از:
وابستگی زیادی به نقطهی اولیه ندارد.
قابلیت فرار از بهینههای موضعی را دارد.
از لحاظ برنامهنویسی و اجرا ساده است.
ثابت شده است که زمان محاسباتی آن دارای حد بالایی از نوع چندجملهای معین برحسب ابعاد مسأله است]۴۹[.
اساس تئوریک شبیهسازی تبرید بر مبنای توزیع بولتزمن استوار است. برطبق توزیع بولتزمن، احتمال قرار گرفتن یک سیستم فرضی در وضعیت X=[xij] طبق توزیع زیر تعیین می شود.
(۱-۴)
بطوریکه T مبین دمای جاری سیستم و E(X) مشابه رابطه (۴-۳) برابر سطح انرژی سیستم در وضعیت X می باشد. به Zتابع پارتیشن گفته می شود. در الگوریتم شبیهسازی تبرید ، برطبق قاعده تصمیم گیری متروپلیس ]۴۹[، احتمال تغییر وضعیت سیستم از X به X مادامی که دمای سیستم در حال کاهش باشد، بصورت رابطه زیر محاسبه میگردد.
(۲-۴)
بطوریکه یک عدد ثابت دلخواه میباشد. رابطه فوق بیان می کند که اگر سطح انرژی سیستم در وضعیت X کمتر از X باشد، آنگاه حتماً سیستم از X به X تغییر وضعیت خواهد داد در غیراینصورت با احتمال معین این تغییر وضعیت صورت خواهد گرفت.
که این احتمال به دمای جاری سیستم و اختلاف سطح انرژی بین دو وضعیت، ، بستگی دارد. بنابراین، نکته حائز اهمیت آن است که دمای اولیه سیستم چقدر بوده و دما با چه نرخی کاهش پیدا کند. کارایی شبیه سازی تبرید به مقدار زیادی به نرخ کاهش دما یا اصطلاحاً زمانبندی سرمایش[۱۲۶] و همچنین دمای اولیه وابسته است ]۱۴[. هدف صرف زمان بیشتر در نزدیکی دمای بحرانی Tc است. منظور از دمای بحرانی، دمایی است که در آن دستیابی به بهینه سراسری محسوستر است، یعنی فرار از بهینه موضعی بطور معناداری سخت یا طولانیتر می شود. برای T>>Tc رفتار شبیه سازی تبرید تقریباً بصورت تصادفی است، در حالیکه برای T<<Tc ، شبیهسازی تبرید به یک بهینه موضعی همگرا یا اصطلاحاً فریز[۱۲۷] خواهد شد. رویه متداول بدینترتیب است که الگوریتم از یک دمای اولیه، T0، نسبتاً بالا فرایند خود را آغاز کرده و در هر تکرار الگوریتم، مقدار دما به آهستگی و تا رسیدن به یک دمای نهایی Tf کاهش خواهد یافت. دامنه کاهش دما عمدتاً بگونهای تعیین میگردد که رابطه T0/Tf=2 برقرار باشد ]۳۹[. تاکنون تحقیقات زیادی در زمینه زمانبندی دما در شبیهسازی تبرید انجام و پیشنهادات فراوانی نیز ارائه شده است. اولین و متداولترین قاعده به هنگام سازی دما که توسط کیرک پاتریک[۱۲۸]]۴۹[ . پیشنهاد شد، بصورت زیر میباشد. این قاعده بعدها مبنای بسیاری از قواعد دیگر به هنگامسازی دما قرار گرفت.
(۳-۴)
بطوریکه k شمارنده انتقالات دما میباشد. همچنین Tk برابر دمای سیستم در تکرار kام و نیز معرف ضریب یا نرخ کاهش دما میباشد که عمدتاً مقدار آن بین ۸/۰ تا ۹۹/۰ اختیار میگردد. مقادیر بالای مبین کاهش آهسته دما و در نتیجه جستجوی بهتر همسایگیها میباشد. ولی زمان حل را افزایش میدهد. برعکس مقادیر کمتر مبین کاهش سریع دما و در نتیجه جستجوی سریعتر همسایگیها میباشد که منجر به همگرایی زودرس الگوریتم خواهد شد. یکی دیگر از قواعد کارا برای به هنگام سازی دما توسط گاتزمن[۱۲۹] پیشنهاد شد ]۳۹[. این قاعده بصورت زیر است.
(۴-۴)
بطوریکه N برابر اندازه یا ابعاد مسأله و پارامتر معرف ثابت واپاشی یا اضمحلال[۱۳۰] است که مقدار آن بصورت زیر محاسبه میگردد.
که درآن K برابر حداکثر تعداد انتقالات یا کاهش دما (یعنی حداکثر مقدار شمارنده k) است که به عنوان معیار توقف الگوریتم بکار میرود. یکی دیگر از پارامترهای اساسی در شبیه سازی تبرید ، تعداد جوابهای پذیرفته شده در هر دما، N، میباشد. این پارامتر حجم جستجوی همسایگی جوابها را در هر دما کنترل می کند. با کاهش دما، اندازه همسایگی نیز کاهش مییابد زیرا احتمال پذیرش جوابهای غیربهبود دهنده نیز در حال کاهش است. بنابراین مقدار N باید به اندازهای بزرگ باشد که موجب جستجوی مؤثر همسایگی شده و حدالمقدور به جوابهای بهتری که ممکن است در همسایگی وجود داشته باشند، دست یابد. از طرف دیگر مقدار N نباید آنقدر بزرگ باشد تا موجب جستجوی غیرمؤثر و ناکارا شده و زمان حل را افزایش دهد. اگر الگوریتم نتواند بیش از این در دمای جاری به جواب بهتری دست یابد، اصطلاحاً می گوییم سیستم در دمای جاری به تعادل[۱۳۱] رسیده است و نیاز به بهنگام سازی دما میباشد. بصورت تجربی، در بسیاری از تحقیقات مقدار N حدود ۱۰۰ در نظر گرفته شده است ]۹۰[.
یکی دیگر از نکات اساسی در شبیه سازی تبرید، استراتژی جستجوی همسایگی است. این امر می تواند با توجه به ماهیت مسأله، بسیار پیچیده باشد. چگونگی حرکت از نقطهای به نقطه دیگر (move) بستگی به ساختار عملگرهای طراحی شده دارد. دستیابی به نقاط کشف نشده فضای جواب و همچنین جستجوی دقیق همسایگی نقاط(Exploitation)، منوط به طراحی عملگرهای کارا و مؤثر میباشد. این کار در بسیاری از مسایل پیچیده بهینهسازی با متغیرهای تصمیم متنوع و محدودیتهای متعدد، امری دشوار است، تا آنجائیکه ممکن است بسیاری از رویکردهای فراابتکاری عملاً کارایی خود را از دست بدهند ]۹۰[.
شکل (۸-۳) فلوچارت یک شبیه سازی تبرید کلاسیک را نشان میدهد. همانطورکه در شکل (۸-۳) نشان داده شده است، الگوریتم شبیهسازی تبرید از دو حلقه داخلی[۱۳۲] و خارجی[۱۳۳] تشکیل شده است. وظیفه حلقه داخلی کنترل دستیابی به تعادل در هر دما است. همچنین وظیفه حلقه خارجی بهنگام سازی دما میباشد. حلقه تصمیم گیری متروپلیس (احتمال پذیرش جوابهای غیربهبود دهنده) در درون حلقه داخلی تعبیه شده است. برطبق این حلقه تصمیم گیری، اگر جواب اخیراً تولید شده یعنی Xnew نتواند تابع هدف را نسبت به جواب فعلی یعنی Xn بیشتر بهبود دهد یعنی E = E(Xnew)- E(Xn)>0 ، آنگاه با احتمال جواب Xnew پذیرفته خواهد شد؛ بطوریکه y یک عدد تصادفی یکنواخت پیوسته در بازه [۰ ,۱] میباشد. بنابراین احتمال پذیرش جواب غیربهبود دهنده به تغییرات مقدار تابع زیان، E، و دمای جاری بستگی خواهد داشت. همانطورکه در شکل (۸-۳)، n شمارنده حلقه داخلی و k شمارنده حلقه خارجی است. همچنین E( ) معرف تابع لاگرانژین مشابه رابطه (۴-۲) میباشد ]۹۰[.
شکل ۹-۳: فلوچارت یک شبیه سازی تبرید کلاسیک ]۹۰[
پارامترهای T0، Tf،N ،Kو را از دریافت کنید
قرار دهید n = ۰ و k = ۰
جواب اولیه X0 را تولید کرده و مقدار X0)E( را محاسبه کنید
با بهره گرفتن از یک عملگر مناسب، جواب همسایگی Xnew را تولید کرده و Xnew)E( را محاسبه کنید
E(Xnew)- E(Xn)< 0
قرار دهید n = n+1 و Xn =Xnew
بله