دانلود کامل پایان نامه در سایت pifo.ir موجود است.

 

انواع الگوریتم‌های هیوریستیک

 

 

در حالت کلی سه دسته از الگوریتم‌های هیوریستیک قابل تشخیص است:
 
الگوریتم‌هایی که بر ویژگی‌های ساختاری مسأله و ساختار جواب متمرکز می‌شوند و با استفاده از آنها الگوریتم‌های سازنده یا جستجوی محلی تعریف می‌کنند.
الگوریتم‌هایی که بر هدایت هیوریستیک یک الگوریتم سازنده یا جستجوی محلی متمرکز می‌شوند به گونه‌ای که آن الگوریتم بتواند بر شرایط حساس (مانند فرار از بهینه محلی) غلبه کند. به این الگوریتم‌ها، متاهیوریستیک[۳۸] گفته می‌شود.
الگوریتم‌هایی که بر ترکیب یک چارچوب یا مفهوم هیوریستیک با گونه‌هایی از برنامه‌ریزی ریاضی (معمولا روشهای دقیق) متمرکز می‌شوند.
هیوریستیک‌های نوع اول می‌توانند خیلی خوب عمل کنند (گاهی اوقات تا حد بهینگی) اما ممکن است در جواب‌های دارای کیفیت پایین گیر کنند. همانطور که اشاره شد یکی از مشکلات مهمی که این الگوریتم‌ها با آن روبرو می‌شوند افتادن در بهینه‌های محلی است، بدون اینکه هیچ شانسی برای فرار از آنها داشته باشند. برای بهبود این الگوریتم‌ها از اواسط دهۀ ۷۰، موج تازه‌ای از رویکردها آغاز گردید. این رویکردها شامل الگوریتم‌هایی است که صریحاً یا به صورت ضمنی تقابل بین ایجاد تنوع جستجو (وقتی علائمی وجود دارد که جستجو به سمت مناطق بد فضای جستجو می‌رود) و تشدید جستجو (با این هدف که بهترین جواب در منطقه مورد بررسی را پیدا کند) را مدیریت می‌کنند. این الگوریتم‌ها متاهیوریستیک نامیده می‌شوند. از بین این الگوریتم‌ها می‌توان به موارد زیر اشاره کرد:
بازپخت شبیه‌سازی شده.
جستجوی ممنوع.
الگوریتم‌های ژنتیک.
شبکه‌های عصبی مصنوعی.
بهینه‌سازی مورچه‌ای یا الگوریتم‌های مورچه.
که در این بین الگوریتم‌های ژنتیک از شهرت بیشتری نسبت به دیگر الگوریتم‌ها برخوردار است.

 

 

۲-۴-۳-۱- الگوریتم ژنتیک

 

 

به دنبال تکامل…
بسیاری از دانشمندان و اندیشمندان، میل به تکامل را مهترین عامل پیشرفت دستگاه آفرینش و انسان می‌دانند. از این دیدگاه هر پدیده‌ای را که بنگرید، یک مسأله جستجوست. انسان همواره می‌کوشد تا به تکامل برسد، از این رو می‌اندیشد، می‌پژوهد، می‌کاود، می‌سازد، می‌نگارد و همواره می‌کوشد تا باقی بماند. حتی می‌‌توان گفت که میل به زادن فرزند، گامی در برآوردن این نیاز و البته دیگر جانداران است. می‌توان این تلاش در راه رسیدن به تکامل را یک مسألۀ جستجو تعبیر کرد.
کوشش یک مؤسسه اقتصادی یا تولیدی –که تابعی برای تبدیل داده‌ها به ستادهاست- برای کمینه کردن هزینه‌ها و بیشینه کردن سود، یک مسألۀ جستجو است. تلاش یک سپاه در حال جنگ، برای وارد کرد بیشترین خسارات بر دشمن با از دست دادن کمترین نیرو و جنگ‌افزار، یا کوشش یک دانش‌آموز برای دست یافتن به بالاترین نمره، سعی یک موسیقیدان یا نگارگر برای خلق زیباترین اثر هنری، تلاش یک کاندیدا برای به دست آوردن بیشترین رأی، طراحی یک نجّار برای ساختن راحت‌ترین صندلی، تلاش و نقشه چینی ورزشکاران و مربّیان برای یافتن راه‌های پیروزی بر حریف و… همگی جستجویی در فضای یک مسأله برای یافتن نقاط یا ناحیه بهینگی (بیشینه یا کمینه) هستند و همین امر موجب پیشرفت تمدن و آفرینش شده است. در دانش کامپیوتر و فناوری اطلاعات هم «جستجو» یکی از مهمترین مسائل است. تنها کافیست که حجم اطلاعات قرار گرفته بر حافظه‌های گوناگون و اینترنت را در نظر بگیریم تا جایگاه ویژه آن را دریابیم.
تاکنون روشهای بسیاری توسط طراحان الگوریتم‌ها برای انجام جستجو بر داده‌های دیجیتالی ارایه شده است. روش‌هایی به نام جستجوی سریع[۳۹] و جستجوی دودویی[۴۰]، از ساده‌ترین الگوریتم‌هایی هستند که دانشجویان گرایش‌های مهندسی کامپیوتر در نخستین سال‌های دوره کارشناسی فرا می‌گیرند، امّا این الگوریتم‌ها شاید، هنگامی که با حجمی گسترده از داده‌ها روبرو شوند، کارایی ندارند و حتی الگوریتم‌های پیشرفته‌تر مانند جستجوی بازپخت شبیه‌سازی شده[۴۱] و الگوریتم عمیق‌شوندۀ‌ تکراری[۴۲] نیز در هنگام رویارویی با مسائل ابرفضا[۴۳] از یافتن راه‌حل یا ناحیه‌های دلخواه در می‌مانند. در این میان یک روش جادویی وجود وجود دارد که مسائل بزرگ را به سادگی و به گونه‌ای شگفت‌انگیز حل می‌کند و آن «الگوریتم ژنتیک»[۴۴] است. ناگفته پیداست که واژۀ «الگوریتم ژنتیک» از دو واژۀ «الگوریتم» و «ژنتیک» تشکیل شده است که خود مبیّن این مطلب است که این روش از دو علم ریاضی و زیست‌شناسی برای حل مسائل کمک می‌گیرد.
الگوریتم‌ژنتیک بر خلاف دیگر روش‌های جستجو، که توسط طراحان نگاشته می‌شوند، در حقیقت به دست دستگاه آفرینش پدید آمده، و پس از شناخت نسبی دانشمندان از این روش به صورت مسأله‌ای ریاضی فرموله شده و وارد دانش مهندسی کامپیوتر و دیگر علوم مرتبط گردیده است. در یکی دو دهه گذشته که این الگوریتم در علوم مهندسی بکار گرفته شده، ناباورانه چنان دست‌آوردها و نتایج شگفت‌انگیزی داشته که نگاه بسیاری از دانش‌پژوهان علوم گوناگون فنی‌مهندسی را به خود جلب کرده است.

 

 

ایدۀ اصلی استفاده از الگوریتم ژنتیک

 

 

در دهه ۷۰ میلادی دانشمندی از دانشگاه میشیگان به نام «جان هلند»[۴۵] ایده استفاده از الگوریتم ژنتیک را در بهینه‌سازی‌های مهندسی مطرح کرد. ایده اساسی این الگوریتم انتقال خصوصیات موروثی توسط ژن‌هاست. (ژنها قطعاتی از یک کروموزوم هستند که اطلاعات مورد نیاز برای یک مولکول DNA یا یک پلی پپتید را دارند. علاوه بر ژنها، انواع مختلفی از توالی‌های مختلف تنظیمی در روی کروموزوم‌ها وجود دارد که در همانندسازی، رونویسی و… شرکت دارند.([۴۶]. فرض کنید مجموعه خصوصیات انسان توسط کروموزوم‌های او به نسل بعدی منتقل می‌شوند. هر ژن در این کروموزوم‌ها نماینده یک خصوصیت است. بعنوان مثال ژن ۱ می‌تواند رنگ چشم باشد، ژن ۲ طول قد، ژن ۳ رنگ مو و الی آخر. حال اگر این کروموزوم به تمامی، به نسل بعد انتقال یابد، تمامی خصوصیات نسل بعدی شبیه به خصوصیات نسل قبل خواهد بود. بَدیهیست که در عمل چنین اتفاقی رخ نمی‌دهد. در واقع به صورت همزمان دو اتفاق برای کروموزوم‌ها می‌افتد. اتّفاق اول موتاسیون(جهش)[۴۷] است. موتاسیون به این صورت است که بعضی ژن‌ها به صورت کاملاً تصادفی تغییر می‌کنند. البته تعداد اینگونه ژن‌ها بسیار کم می‌باشد اما در هر حال این تغییر تصادفی همانگونه که پیشتر دیدیم بسیار مهم است. مثلاً ژن رنگ چشم می‌تواند به صورت تصادفی باعث شود تا در نسل بعدی یک نفر دارای چشمان سبز باشد، در حالی که تمامی نسل قبل دارای چشم قهوه‌ای بوده‌اند. علاوه بر موتاسیون اتفاق دیگری که می‌افتد و البته این اتفاق به تعداد بسیار بیشتری نسبت به موتاسیون رخ می‌دهد چسبیدن ابتدای یک کروموزوم به انتهای یک کروموزوم دیگر است.[۴۸] این همان چیزیست که مثلاً باعث می‌شود تا فرزند تعدادی از خصوصیات پدر و تعدادی از خصوصیات مادر را با هم به ارث ببرد و از شبیه شدن تام فرزند به تنها یکی از والدین جلوگیری می‌کند.
حال می‌توانیم اینگونه بیان کنیم که: الگوریتم ژنتیک ابزاری می‌باشد که توسط آن ماشین می‌تواند مکانیزم انتخاب طبیعی را شبیه سازی نماید. این عمل با جستجو در فضای مسأله جهت یافتن جواب برتر و نه الزاماً بهینه صورت می‌پذیرد. الگوریتم ژنتیک را می‌توان یک روش جستجوی کلّی نامید که از قوانین تکامل بیولوژیک طبیعی تقلید می کند. در واقع الگوریتم‌های ژنتیک از اصول انتخاب طبیعی داروین برای یافتن فرمول بهینه جهت پیش‌بینی یا تطبیق الگو استفاده می‌کنند. الگوریتم‌های ژنتیک اغلب گزینه خوبی برای تکنیک‌های پیش‌بینی بر مبنای رگرسیون[۴۹] هستند.

 

 

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

 

 

الگوریتم ژنتیک به عنوان یک الگوریتم محاسباتیِ بهینه‌سازی با در نظر گرفتن مجموعه‌ای از نقاط فضای جواب در هر تکرار محاسباتی به نحو مؤثری نواحی مختلف فضای جواب را جستجو می‌کند. در مکانیزم جستجو گرچه مقدار تابع هدف تمام فضای جواب محاسبه نمی‌شود ولی مقدار محاسبه شده تابع هدف برای هر نقطه، در متوسط‌گیری آماری تابع هدف در کلیه زیر فضاهایی که آن نقطه به آنها وابسته بوده دخالت داده می‌شود و این زیر فضاها به طور موازی از نظر تابع هدف متوسط‌گیری آماری می‌شوند. این مکانیزم را توازی ضمنی[۵۰] می‌گویند. این روند باعث می‌شود که جستجوی فضا به نواحی از آن که متوسط آماری تابع هدف در آنها زیاد بوده و امکان وجود نقطه بهینه مطلق در آنها بیشتر است سوق پیدا کند. چون در این روش برخلاف روش‌های تک‌مسیری فضای جواب به طور همه جانبه جستجو می‌شود، امکان کمتری برای همگرایی به یک نقطه بهینه محلی وجود خواهد داشت.
امتیاز دیگر این الگوریتم آن است که هیچ محدودیتی برای تابع بهینه شونده، مثل مشتق‌پذیری یا پیوستگی لازم ندارد و در روند جستجو خود تنها به تعیین مقدار تابع هدف در نقاط مختلف نیاز دارد و هیچ اطلاعاتِ کمکی دیگری، مثل مشتق تابع را استفاده نمی‌کند. لذا می‌توان در مسائل مختلف اعم از خطی، پیوسته یا گسسته استفاده می‌شود و به سهولت با مسائل مختلف قابل تطبیق است.
در هر تکرار هر یک از رشته‌های موجود در جمعیت رشته‌ها، رمزگشایی شده و مقدار تابع هدف برای آن به دست می‌آید. بر اساس مقادیر به دست آمده تابع هدف در جمعیت رشته‌ها، به هر رشته یک عدد برازندگی نسبت داده می‌شود. این عدد برازندگی احتمال انتخاب را برای هر رشته تعیین خواهد کرد. بر اساس این احتمال انتخاب، مجموعه‌ای از رشته‌ها انتخاب شده و با اعمال عملکردهای ژنتیکی روی آنها رشته‌های جدید جایگزین رشته‌هایی از جمعیت اولیه می‌شوند تا تعداد جمعیت رشته‌ها در تکرارهای محاسباتی مختلف ثابت باشد. مکانیزم‌های تصادفی که روی انتخاب و حذف رشته‌ها عمل می‌کنند به گونه‌ای هستند که رشته‌هایی که عدد برازندگی بیشتری دارند، احتمال بیشتری برای ترکیب و تولید رشته‌های جدید داشته و در مرحله جایگزینی نسبت به دیگر رشته‌ها مقاوم‌تر هستند. بدین لحاظ جمعیت دنباله‌ها در یک رقابت بر اساس تابع هدف در طیّ نسل‌های مختلف، کامل شده و متوسط مقدار تابع هدف در جمعیت رشته‌ها افزایش می‌یابد. بطور کلی در این الگوریتم ضمن آنکه در هر تکرار محاسباتی، توسط عملگرهای ژنتیکی نقاطی جدید از فضای جواب مورد جستجو قرار می‌گیرند توسط مکانیزم انتخاب، روند جستجوی نواحی از فضا را که متوسط آماری تابع هدف در آنها بیشتر است، کنکاش می‌کند. بر اساس سیکل اجرایی فوق، در هر تکرار محاسباتی، توسط عملگرهای ژنتیکی نقاط جدیدی از فضای جواب مورد جستجو قرار می‌گیرند توسط مکانیزم انتخاب، روند جستجو نواحی از فضا را که متوسط آماری تابع هدف در آنها بیشتر است، کنکاش می‌کند. که بر این اساس، در هر تکرار محاسباتی، سه عملگر اصلی روی رشته‌ها عمل می‌کند؛ این سه عملگر عبارتند از: دو عملگر ژنتیکی و عملکرد انتخابی تصادفی. «گلد برگ»[۵۱] الگوریتم ژنتیکی «جان هولند» را با عنوان الگوریتم ژنتیک ساده[۵۲] معرفی می‌کند؛ الگوریتم ژنتیک را از الگوریتم ژنتیک طبیعی اقتباس کردند.. در الگوریتم ژنتیک، مجموعه ای از متغیرهای طراحی را توسط رشته‌هایی با طول ثابت[۵۳] یا متغیر[۵۴] کدکذاری می‌کنند که در سیستم‌های بیولوژیکی آنها را کرروموزوم یا فرد[۵۵] می‌نامند. هر رشته یا کروموزوم یک نقطۀ پاسخ در فضای جستجو را نشان می‌دهد. به ساختمان رشته‌ها یعنی مجموعه‌ای از پارامترها که توسط یک کروموزوم خاص نمایش داده می‌شود ژنوتیپ[۵۶] و به مقدار رمزگشایی آن فنوتیپ[۵۷] می‌گویند. الگوریتم‌های وراثتی فرآیندهای تکراری هستند، که هر مرحلۀ تکراری را نسل و مجموعه‌هایی از پاسخ‌ها در هر نسل را جمعیت نامیده‌اند.
الگوریتم‌های ژنتیک، جستجوی اصلی را در فضای پاسخ به اجرا می‌گذارند. این الگوریتم‌ها با تولید نسل[۵۸] آغاز می‌شوند که وظیفه ایجاد مجموعه نقاط جستجوی اولیه به نام «جمعیت اولیه»[۵۹] را بر عهده دارند و به طور انتخابی یا تصادفی تعیین می‌شوند. از آنجایی که الگوریتم‌های ژنتیک برای هدایت عملیات جستجو به طرف نقطه بهینه از روش‌های آماری استفاده می‌کنند، در فرآیندی که به انتخاب طبیعی وابسته است، جمعیت موجود به تناسب برازندگی افراد آن برای نسل بعد انتخاب می‌شود. سپس عملگرهای ژنتیکی شامل انتخاب[۶۰] ، پیوند(ترکیب)، جهش و دیگر عملگرهای احتمالی اِعمال شده و جمعیت جدید به وجود می‌آید. پس از آن جمعیت جدیدی جایگزین جمعیت پیشین می‌شود و این چرخه ادامه می‌یابد.
معمولاً جمعیت جدید برازندگی بیشتری دارد این بدان معناست که از نسلی به نسل دیگر جمعیت بهبود می‌آید. هنگامی جستجو نتیجه‌بخش خواهد بود که به حداکثر نسل ممکن رسیده باشیم یا همگرایی حاصل شده باشد و یا معیارهای توقف برآورده شده باشد.

 

 

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

 

 

الگوریتم ژنتیک از عملگرهای زیر تشکیل شده است:

 

 

کدگذاری[۶۱]

 

 

این مرحله شاید مشکلترین مرحله حل مسأله به روش الگوریتم باشد. الگوریتم ژنتیک به جای اینکه بر روی پارامترها یا متغیرهای مسأله کار کند، با شکل کد شدۀ آنها سروکار دارد. یکی از روشهای کد کردن، کد کردن دودویی می باشد که در آن هدف تبدیل جواب مسأله به رشته‌ای از اعداد باینری (در مبنای ۲) است.
انتخاب
در مرحله انتخاب، یک جفت از کروموزوم‌ها برگزیده می‌شوند تا با هم ترکیب شوند، عملگر انتخاب رابط بین دو نسل است و بعضی از اعضای نسل کنونی را به نسل آینده منتقل می‌کند، بعد از انتخاب، عملگرهای ژنتیک روی دو عضو برگزیده اعمال می‌شوند، معیار در انتخاب اعضاء ارزش تطابق آنها می‌باشد اما روند انتخاب حالتی تصادفی دارد.
بطور کلی روش‌های متداول انتخاب در الگوریتم ژنتیک عبارتند از:
انتخاب چرخ رولت – انتخاب مسابقه تصادفی – انتخاب بولتزمن – نخبه سالاری
انتخاب رقابتی – انتخاب قطع سر – انتخاب قطعی بریندل – انتخاب حالت پایدار
انتخاب جایگزینی نسلی اصلاح شده – انتخاب مسابقه (تورنمنت) – انتخاب ترتیبی

 

 

ارزیابی[۶۲]



 
موضوعات: بدون موضوع  لینک ثابت


فرم در حال بارگذاری ...