بسم الله الرحمن
الرحیم
موضوع تحقیق : الگوریتمهای تکاملی
فهرست مطالب
مقدمه………………………………………………………………………………………………………………………………………….7
بخش اول…………………………………………………………………………………………………………………………………9
تعریف الگوریتم های تکاملی……………………………………………………………………………………………………..9
علت استفاده از الگوریتم های تکاملی………………………………………………………………………………………11
انواع الگوریتم های تکاملی……………………………………………………………………………………………………….11
روشهای الگوریتم تکاملی………………………………………………………………………………………………………….12
استراتژی های تکاملی……………………………………………………………………………………………………………..12
برنامه ریزی تکاملی………………………………………………………………………………………………………………….13
بخش دوم…………………………………………………………………………………………………………………………………14
الگوریتم ژنتیک…………………………………………………………………………………………………………………………14
ژنتیک در طبیعت…………………………………………………………………………………………………………………..17
ایده اصلی الگوریتم ژنتیک……………………………………………………………………………………………………..18
روشهای نمایش الگوریتم ژنتیک…………………………………………………………………………………………….18
روشهای انتخاب الگوریتم ژنتیک……………………………………………………………………………………………..19
عملگرهای الگوریتم ژنتیک…………………………………………………………………………………………………….20
الگوریتم ژنتیک استاندارد………………………………………………………………………………………………………..20
بخش سوم…………………………………………………………………………………………………………………………………22
الگوریتم کلونی زنبور عسل……………………………………………………………………………………………………..22
شرح الگوریتم کلونی زنبور عسل……………………………………………………………………………………………..22
جستجوی غذا در طبیعت……………………………………………………………………………………………………….22
کاربردهای الگوریتم زنبور عسل……………………………………………………………………………………………23
بخش چهارم………………………………………………………………………………………………………………………….24
الگوریتم مورچگان(ACO)……………………………………………………………………………………………………..24
مزیتهای ACO………………………………………………………………………………………………………………………26
کاربردهای ACO……………………………………………………………………………………………………………………27
انواع مختلف الگوریتم های بهینه سازی مورچگان……………………………………………………………….27
بخش پنجم…………………………………………………………………………………………………………………………….28
الگوریتم رقابت استعماری………………………………………………………………………………………………………28
شکل دهی امپراطوری های اولیه…………………………………………………………………………………………..29
حرکت مستعمره ها به سمت امپریالیست……………………………………………………………………………30
انقلاب؛تغییرات ناگهانی در موقعیت یک کشور……………………………………………………………………31
جابجایی موقعیت مستعمره و امپریالیست……………………………………………………………………………31
رقابت استعماری……………………………………………………………………………………………………………………31
سقوط امپراطوری های ضعیف…………………………………………………………………………………………………32
شبه کد…………………………………………………………………………………………………………………………………..32
کاربردها………………………………………………………………………………………………………………………………….32
نسخه های دیگر……………………………………………………………………………………………………………………….33
بخش ششم……………………………………………………………………………………………………………………………..34
الگوریتم گورخر گوگل……………………………………………………………………………………………………………34
معنی و مفهموم فروشگاه های اینترنتی………………………………………………………………………………..35
استانداردهای مورد تایید الگوریتم گورخر…………………………………………………………………………..36
قرار گرفتن در لیست فروشگاه های مورد تایید گوگل…………………………………………………………36
مکان فیزیکی فروشگاه های اینترنتی……………………………………………………………………………………37
داشتن پشتیبانی آنلاین…………………………………………………………………………………………………………37
داشتن سیاست شفاف در فروشگاه……………………………………………………………………………………….37
همسو بودن تبلیغات فروشگاه با مسیر تبلیغات…………………………………………………………………….38
بخش هفتم……………………………………………………………………………………………………………………………..38
الگوریتم پاندای گوگل……………………………………………………………………………………………………………..38
نحوه انتخاب اسم الگوریتم……………………………………………………………………………………………………..40
حفظ رتبه سایت……………………………………………………………………………………………………………………..41
بخش هشتم……………………………………………………………………………………………………………………………..43
الگوریتم تکاملی سیمبیوتیک(SEA)………………………………………………………………………………………43
عملگر ترکیب سیمبیوتیک………………………………………………………………………………………………………44
ایده کلی SEA………………………………………………………………………………………………………………………….44
بخش نهم………………………………………………………………………………………………………………………………..45
الگوریتم پنگوئن گوگل…………………………………………………………………………………………………………….45
آپدیدت پنگوئن…………………………………………………………………………………………………………………………46
دلایل و روشهای آپدیت پنگوئئن…………………………………………………………………………………………….47
مقدمه
همان طور که تاریخ الگوریتم های تکاملی نشان می دهد، گونه های زیادی از الگوریتم های تکاملی وجود دارند. ولی ایده همه آنها یکی است: با داشتن جمعیتی از گونه ها فشار محیطی باعث انتخاب می شود (القاء بهترین) و این افزایش شایستگیhttp://www.irmatlab.ir/%D8%B3%D8%A7%D8%AE%D8%AA-%D9%BE%D8%A7%D9%8A%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D9%86%D8%B4-%D8%AA%D9%88%D9%84%D9%8A%D8%AF-%D8%B1%D9%81%D8%AA%D8%A7%D8%B1-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF – _ftn3 جمعیت را نتیجه می دهد. با داشتن یک تابع کیفیتی که می خواهیم بیشینه شود، می توان مجموعه ای از جواب های کاندید را به طور تصادفی تولید کرد و تابع کیفیت را به عنوان معیاری برای محاسبه شایستگی به کار برد – (هر چه بیشتر، بهتر) بر اساس این شایستگی ، بعضی از کاندیدهای بهتر انتخاب می شوند، تا به عنوان هسته ای برای تولید نسل بعد به کار روند. بر روی این کاندیدها ترکیب و یا جهش اعمال می شود. ترکیب بر روی دو یا بیشتر کاندید اعمال می شود (والدین) و نتیجه آن تولید فرزند (فرزندانی) است.
اعمال ترکیب و جهش باعث تولید مجموعه جدیدی می شود که با مجموعه قبلی (والدین) رقابت می کنند تا در نهایت برنده ها در نسل بعدی ظاهر شوند. این کار می تواند ادامه پیدا کند تا یک کاندید با ویژگی های کافی (جواب) به دست بیاید و یا اینکه محدودیت هایی که از قبل برای مسئله تعریف کرده ایم، ارضا شوند.
در این عمل دو نیروی اصلی وجود دارد که پایه سیستم تکاملی است:
– عملگرهای تغییر (ترکیب و جهش) که باعث ایجاد گوناگونی لازم و در نتیجه نوآوری می شود.
– انتخاب که نیرویی است که کیفیت را به جلو می برد.
ترکیب تغییر و انتخاب باعث بهتر شدن مقادیر شایستگی در جمعیت ها می شود.
با مشاهده روند حرکت جمعیت می توان تکامل به سوی بهینگی را مشاهده کرد.
تکامل به عنوان فرایند تطبیق بیان می شود. از این دید، شایستگی به عنوان هدف اصلی که باید بهینه شود مطرح نیست، بلکه عبارتی است که نیازمندی کل محیط را بیان می کند، هرچه این نیازمندی ها بیشتر ارضا شوند، نتیجه در تعداد بیشتری از اعضای جمعیت خود را نشان می دهد. عمل تکامل باعث می شود که جمعیت با محیط خود بیشتر و بیشتر سازگار شود.
بسیاری از اجزای فرآیند تکامل اتفاقیhttp://www.irmatlab.ir/%D8%B3%D8%A7%D8%AE%D8%AA-%D9%BE%D8%A7%D9%8A%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D9%86%D8%B4-%D8%AA%D9%88%D9%84%D9%8A%D8%AF-%D8%B1%D9%81%D8%AA%D8%A7%D8%B1-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF – _ftn5 هستند. این اجزا در زمان انتخاب موجوداتی که مناسب ترhttp://www.irmatlab.ir/%D8%B3%D8%A7%D8%AE%D8%AA-%D9%BE%D8%A7%D9%8A%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D9%86%D8%B4-%D8%AA%D9%88%D9%84%D9%8A%D8%AF-%D8%B1%D9%81%D8%AA%D8%A7%D8%B1-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF – _ftn6 هستند، احتمال انتخاب بیشتری دارند، هر چند در بیشتر اوقات، موجودات ضعیف تر هم شانس انتخاب شدن و زنده ماندن را دارند. اکثر اوقات موجودات به طور تصادفی برای ترکیب از جمعیت خارج می شوند. این مطلب در مورد تغییرات نیز صادق است.
همان گونه که از شبه کد نیز معلوم است، الگوریتم های تکاملی جزئی از الگوریتم های تولید – آزمایش هستند.
– الگوریتم تکاملی مبتنی بر جمعیت است.
– الگوریتم تکاملی از ترکیب استفاده می کند تا اطلاعات گونه های بیشتری را در یک گونه خلاصه کند.
– الگوریتم تکاملی اتفاقی است.
گونه های مختلف الگوریتم های تکاملی همگی از طرح کلی که ارائه شد، پیروی می کنند و فقط در جزئیات تکنیکی متفاوت هستند.
بخش اول
تعریف الگوریتم های تکاملی
الگوریتم های تکاملی( Evolutionary algorithms) زیر مجموعه ای از محاسبات تکاملی هستند و در شاخه هوش مصنوعی قرار می گیرند.
الگوریتم های تکاملی شامل الگوریتم هایی جهت جستجو است که در آنها عمل جستجو از چندین نقطه در فضای جواب می باشد.
مسائل مهندسی و بهینه سازی ای وجود دارند که راه حل های عادی و متعارف برای آنها چاره ساز نیستند. زیرا که یا تحلیلی برای آنها وجود ندارد (یا حل تحلیلی بسیار مشکلی دارند) و یا پیچیدگی، متغیرها و پارامترهای بسیار مسئله، انبوه از راه حل ها و نه لزوماً جواب مسئله را پیش روی مهندس می گذارد که امکان محک و ارزیابی تمام راه حل ها به دلیل تعداد بسیار زیاد وجود ندارد.
الگوریتم های تکامل پذیر روش های بر مبنای جستجوی تصادفی اند که از مدل سازی تکامل بیولوژیکی طبیعی الگوبرداری شده اند. آنها بر روی پاسخ های ممکنی کار می کنند که از ویژگی برتری برخوردار و نیز بقای نسل بیشتری دارند، لذا تخمین نزدیک تری از پاسخ بهینه بدست می دهند.
در هر نسل دسته جدیدی از تخمین ها بر مبنای انتخاب اعضای با میزان برازندگی(شایستگی) بیشتر تولید شده و آنها مشابه آنچه در طبیعت رخ می دهد با هم تلفیق می شوند. این روند نتیجتاً تکامل افرادی را شامل می شود که نسبت به والدینشان در محیط سازگارترند، دقیقاً مشابه آنچه در مطابقت با طبیعت است.
الگوریتم های تکامل پذیر بر روی جمعیت هایی از افراد به جای یک تک پاسخ کار می کنند، از این رو جستجو به صورت موازی می تواند صورت گیرد
چنین الگوریتم تکاملیِ تک جامعه ای به اندازه کافی قوی است و در گستره وسیعی از مسائل کارآمد می باشد. با این حال با ایجاد چندین زیرجامعه نتایج بهتری بدست خواهد آمد. هر زیر جامعه بر روی چندین نسل جدا از هم(نظیر الگوریتم تکاملی تک جامعه ای) شکل می گیرد و پیش از آن هیچ عضوی بین زیرجامعه ها جابجا نخواهد شد. الگوریتم تکاملی چند جامعه ای تحول گونه ها را نسبت به الگوریتم تکاملی تک جامعه ای با روشی مشابه تر به طبیعت مدل سازی می نماید
الگوریتم های تکاملی به طور اساسی با دیگر روش های بهینه سازی و جستجوی مرسوم قدیمی تفاوت دارند. برخی از این تفاوت ها عبارتند از:
– الگوریتم های تکامل پذیر تنها یک تک نقطه را جستجو نمی کنند بلکه جمعیتی از نقاط را به صورت موازی بررسی می نمایند.
– الگوریتم های تکامل پذیر نیاز به اطلاعاتی ضمنی و دیگر دانش های مکمل ندارند؛ تنها تابع هدف و شایستگی مربوطه در جهت های جستجو تاثیر گذارند.
– الگوریتم های تکامل پذیر از قوانین در حال تغییر احتمالی بهره می برند و نه موارد مشخص و معین.
– استفاده از الگوریتم های تکامل پذیر به طور کلی خیلی سر راست است، زیرا هیچگونه محدودیت هایی برای تعریف تابع هدف وجود ندارد.
– الگوریتم های تکامل پذیر تعداد زیادی از پاسخ های قابل قبول را بدست می دهند و انتخاب پایانی بر عهده کاربر است. لذا در مواردی که مسئله مورد نظر شامل یک پاسخ مفرد نمی باشد، مثلاً خانواده ای از پاسخ های بهینه-پَرِتو، مشابه آنچه در بهینه سازی چند هدفه و مسائل زمان بندی وجود دارد، الگوریتم های تکاملی برای شناسایی این پاسخ های چندگانه به طور همزمان ذاتاً کارآمدند.
علت استفاده از الگوریتم های تکاملی
الگوریتم های تکاملی در مقایسه با سایر الگوریتم های بهینه سازی برتری هایی دارند که موجب شده است به طور گسترده مورد استفاده قرار بگیرند. به عنوان مثال، این الگوریتم ها، نیاز به معرفی کامل مسئله ندارند و تنها با داشتن اطلاعات چندی در مورد تعریف مسئله می توانند کار کنند. همچنین محدودیتی درمورد تابع شایستگی ندارند و لزومی ندارد که این تابع مثلاً مشتق پذیر باشد.
علاوه بر این موارد، چون الگوریتم های تکاملی دارای جمعیتی از موجودات هستند و روی بخش های مختلفی از جمعیت به طور موازی کار می کنند، احتمال کمتری برای قرار گرفتن در بهینه های محلیC:UsersPublicPicturesساØ(r)ت Ù3/4اÙÚ¯Ø§Ù Ø¯Ø§ÙØ´ تÙÙÙØ¯ Ø±ÙØªØ§Ø± با Ø§Ø³ØªÙØ§Ø¯Ù ازاÙÚ¯ÙØ±ÙتÙ
تÚ(c)اÙ
Ù٠سÙÙ
باÙÙØ¬ÙØ³ÙØ³ _ Ø³ÙØ§Ø±Ø´ Ù3/4ÛØ§Ø¯Ù Ø³Ø§Ø²Û Ø§ÙØ¬Ø§Ù
Ù3/4رÙÚÙ Ù
ØªÙØ¨ matlab.htm – _ftn8 دارند. این قابلیت الگوریتم های تکاملی اجازه می دهد که کار بهینه سازی را به طور موازی روی چندین بخش جمعیت انجام داد. به عنوان نتیجه این ویژگی گفته می شود که الگوریتم های تکاملی روی جمعیت های "فضول" خوب عمل می کنند. این گونه جمعیت ها دارای تعداد زیادی بهینه های محلی هستند. الگوریتم های تکاملی در این بهینه های محلی گیر نمی کنند و معمولاً می توانند در نهایت به بهینه ترین جواب برسند.
انواع الگوریتم های تکاملی
همان طور که در بخش اول گفته شد، گونه های مختلفی از الگوریتم های تکاملی وجود دارد، گفته می شود که این الگوریتم ها به سه دسته کلی تقسیم می شوند:
1.الگوریتم های ژنتیکی (GA) ارائه شده توسط Holland و مطالعه شده توسط Goldberg
2.استراتژی های تکاملی (ES) ارائه شده توسط Rechenberg و Schwefel
3.برنامه ریزی تکامل(EP) ارائه شده توسط fogel Et.Al و اصلاح شده توسط D.B Fogel
هر سه روش بالا اثبات شده اند که با داشتن فضای مسئله پیچیده، پیوسته و چند کیفیتی به جواب تقریباً بهینه می رسند.
از دسته بندی بالا، گروه اول (الگوریتم های ژنتیکی) را به تفسیر در فصول بعدی بررسی می کنیم. در مورد دو دسته دیگر به طور اختصار توضیح می دهیم.
روش الگوریتم تکاملی
از مکانیزم ها و عملیات ابتدایی برای حل مسئله استفاده می کنند و در طی یک سری از تکرار ها به راه حل مناسب برای مسئله می پردازند. این الگوریتم ها غالباً از یک جمعیت حاوی راه حل های تصادفی شروع می کنند و در طی هر مرحله تکرار سعی در بهتر کردن مجموعه راه حل ها دارند.
در آغاز کار تعدادی از افراد جامعه به صورت تصادفی حدس زده شده، سپس تابع هدف برای هر یک از این افراد محاسبه و اولین نسل ایجاد خواهد شد. اگر هیچ یک از معیارهای خاتمه بهینه سازی رویت نشوند ایجاد نسل جدید آغاز خواهد شد. افراد بر حسب میزان شایستگی شان برای تولید نوزادها انتخاب می شوند. این افراد به عنوان والدین محسوب می شوند و با بازترکیب نوزادها را تولید می نمایند. سپس تمامی نوزادها با یک مقدار معینی از احتمال ، یعنی همان جهش، تغییر ژنتیکی می یابند. اکنون میزان شایستگی(برازندگی) نوزادان تعیین و در اجتماع جایگزین والدین شده و نسل جدید را ایجاد می نمایند. این چرخه آنقدر تکرار می شود تا یکی از معیارهای پایان بهینه سازی کسب شود.
استراتژی های تکاملی
استراتژی های تکاملی ارایه شده توسط Rechenberg، Schwefel از لحاظ تاریخی به منظور حل مسائل بهینه سازی پارامترها تعریف شدند. در نتیجه هر گونه در جمعیت به صورت لیستی از اعداد حقیقی تعریف می شد علاوه بر این هر گونه شامل یک سری پارامترهای استراتژی نیز بود. این پارامترها برای کنترل رفتار عملگرهای جهش استفاده می شدند.
در هر دوره از اجرای الگوریتم، فرزند تولید می شوند. اندازه جمعیت بود و معمولاً برابر ۶ بود عملگر ترکیب به ازای تولید یک فرزند نیاز به دو والد داشت. همین دو والد برای تولید هر دو بخش فرزند (پارامترهای استراتژیک و متغیرهای شی) مورد استفاده قرار می گرفتند. انتخاب والدها به صورت تصادفی از جمعیت فعلی بود. گونه های مختلفی برای ترکیب وجود دارند ولی بهترین جواب برای نوع ترکیبی بود که متغیرهای شیء فرزند را همه از روی یکی از والدین برداشته و برای پارامترهای استراتژی نیز میانگین پارامترهای استراتژی والدین استفاده شود.
عملگر اصلی در ES، جهش است و روی هر دو بخش گونه اعمال می شود. عملگر جهش ابتدا روی بخش پارامترهای استراتژی اعمال می شود. بعد از آن متغیرهای شیء با استفاده از نتایجی که از اعمال جهش روی پارامترهای استراتژی حاصل شده است، جهش می کنند. این نوع جهش به ES این قابلیت را می دهد که خود را تطبیق دهد و سعی کند بهترین پارامترهای استراتژی را بدست آورد.
انتخاب در ES به طور قطعی انجام می شود. بهترین گونه از بین فرزند انتخاب می شوند. (انتخاب ) یا بهترین گونه از اجتماع دو جمعیت انتخاب می شوند (انتخاب )همانند برخی دیگر از الگوریتم های تکاملی ES تا زمانی که یکی از شروط خاتمه مسئله برقرار شود، اجرا می شود.
برنامه ریزی تکاملی
برنامه ریزی تکاملی ارائه شده توسط L.J. Fogel et al اولین بار برای تکامل ماشین های حالت با استفاده از تعداد محدودی کد کردن الفباها تعریف شد. بعد از آن EP D. B Fogel را برای بهینه سازی متغیرها گسترش داد. همانند ES، گونه ها در EP به صورت رشته ای از اعداد حقیقی تعریف می شوند. تفاوت EP با ES این است که در EP عملگر ترکیب وجود ندارد. تکامل به طور کامل به عملگر جهش وابسته است. عملگر جهش از توزیع احتمال گووس برای تغییر هر متغیر استفاده می کند.
انحراف معیار استاندارد از روی ریشه تبدیل خطی شایستگی والدین به دست می آید (این تبدیل را باید پارامتری کنیم) برای جلوگیری از کار زیاد با پارامترها meta-EP, Fogel را ارائه کرده است. در meta- EP هر گونه شامل متغیرهای شی و واریانس (یک واریانس به ازای هر متغیر شی) است. از این واریانس ها برای کنترل عملگر جهش گووسی استفاده می شود.
عملگر انتخاب با استفاده از tranment-select انجام می شوند. گونه خاصی به نام q-tournament selection استفاده می شود. الگوریتم به این صورت است که u را اجتماع جمعیت فرزندان و والدین می گیریم. به ازای هر عضو m از u،q حریف از u به صورت تصادفی انتخاب می شوند. تعداد حریف هایی که مقدار شایستگی آنها از m بدتر است حساب می شود گونه ای که تعداد حریف های ضعیف آنها از همه بیشتر هستند و وارد جمعیت می شوند. هرچه q افزایش پیدا می کند، الگوریتم انتخاب قطعی تر می شود. در نتیجه بهترین گونه همیشه در جمعیت جدید حضور دارد.
بخش دوم
الگوریتم ژنتیک
زندگی در طبیعت دائماً در حال تکامل است. الگوریتم های ژنتیکی، الگوریتم های محاسباتی هستند که با توجه به تکامل ایجاد شده اند. به نظر می آید الگوریتم های ژنتیکی برای جستحو فضاهای بزرگ که به طور ضعیف توصیف شده اند، به کار می روند.
هنگامی که لغت تنازع بقا به کار می رود اغلب بار ارزشی منفی آن به ذهن می آید. شاید همزمان قانون جنگل به ذهن برسد و حکم بقای قوی ترها!
البته همیشه هم قوی ترین ها برنده نبوده اند. مثلاً دایناسورها با وجود جثه عظیم و قوی تر بودن در طی روندی کاملاً طبیعی بازیِ بقا و ادامه نسل را واگذار کردند در حالی که موجوداتی بسیار ضعیف تر از آنها حیات خویش را ادامه دادند. ظاهراً طبیعت، بهترین ها را تنها بر اساس هیکل انتخاب نمی کند! در واقع درست تر آنست که بگوییم طبیعت مناسب ترین ها (Fittest) را انتخاب می کند نه بهترین ها.
قانون انتخاب طبیعی بدین صورت است که تنها گونه هایی از یک جمعیت ادامه نسل می دهند که بهترین خصوصیات را داشته باشند و آنهایی که این خصوصیات را نداشته باشند به تدریج و در طی زمان از بین می روند.
الگوریتم های ژنتیک یکی از الگوریتم های جستجوی تصادفی است که ایده آن برگرفته از طبیعت می باشد. الگوریتم های ژنتیک برای روش های کلاسیک بهینه سازی در حل مسائل خطی، محدب و برخی مشکلات مشابه بسیار موفق بوده اند ولی الگوریتم های ژنتیک برای حل مسائل گسسته و غیر خطی بسیار کاراتر می باشند. به عنوان مثال می توان به مسئله فروشنده دوره گرد اشاره کرد. در طبیعت از ترکیب کروموزوم های بهتر، نسل های بهتری پدید می آیند. در این بین گاهی اوقات جهش هایی نیز در کروموزوم ها روی می دهد که ممکن است باعث بهتر شدن نسل بعدی شوند. الگوریتم ژنتیک نیز با استفاده از این ایده اقدام به حل مسائل می کند. روند استفاده از الگوریتم های ژنتیک به صورت زیر می باشد:
الف) معرفی جواب های مسئله به عنوان کروموزوم
ب) معرفی تابع فیت نس
ج) جمع آوری اولین جمعیت
د) معرفی عملگر های انتخاب
ه) معرفی عملگر های تولید مثل
در الگوریتم های ژنتیک ابتدا به طور تصادفی یا الگوریتمیک، چندین جواب برای مسئله تولید می کنیم. این مجموعه جواب را جمعیت اولیه می نامیم. هر جواب را یک کروموزوم می نامیم. سپس با استفاده از عملگر های الگوریتم ژنتیک پس از انتخاب کروموزوم های بهتر، کروموزوم ها را باهم ترکیب کرده و جهشی در آنها ایجاد می کنیم. در نهایت نیز جمعیت فعلی را با جمعیت جدیدی که از ترکیب و جهش در کروموزوم ها حاصل می شود، ترکیب می کنیم.
مثلاً فرض کنید گونه خاصی از افراد، هوش بیشتری از بقیه افرادِ یک جامعه یا کولونی دارند. در شرایط کاملاً طبیعی، این افراد پیشرفت بهتری خواهند کرد و رفاه نسبتاً بالاتری خواهند داشت و این رفاه، خود باعث طول عمر بیشتر و باروری بهتر خواهد بود (توجه کنید شرایط، طبیعیست نه در یک جامعه سطح بالا با ملاحظات امروزی؛ یعنی طول عمر بیشتر در این جامعه نمونه با زاد و ولد بیشتر همراه است). حال اگر این خصوصیت (هوش) ارثی باشد بالطبع در نسل بعدی همان جامعه تعداد افراد باهوش به دلیل زاد و ولد بیشترِ این گونه افراد، بیشتر خواهد بود. اگر همین روند را ادامه دهید خواهید دید که در طی نسل های متوالی دائماً جامعه نمونه ما باهوش و باهوش تر می شود. بدین ترتیب یک مکانیزم ساده طبیعی توانسته است در طی چند نسل عملاً افراد کم هوش را از جامعه حذف کند علاوه بر اینکه میزان هوش متوسط جامعه نیز دائماً در حال افزایش است.
بدین ترتیب می توان دید که طبیعت با بهره گیری از یک روش بسیار ساده (حذف تدریجی گونه های نامناسب و در عین حال تکثیر بالاتر گونه های بهینه)، توانسته است دائماً هر نسل را از لحاظ خصوصیات مختلف ارتقاء بخشد.
البته آنچه در بالا ذکر شد به تنهایی توصیف کننده آنچه واقعاً در قالب تکامل در طبیعت اتفاق می افتد نیست. بهینه سازی و تکامل تدریجی به خودی خود نمی تواند طبیعت را در دسترسی به بهترین نمونه ها یاری دهد. اجازه دهید تا این مساله را با یک مثال شرح دهیم:
اما آیا می توان گفت اختراع هواپیما نتیجه همین تلاش بوده است؟ یا فرضاً می توان گفت فضاپیماها حاصل بهینه سازی طرح اولیه هواپیماها بوده اند؟
پاسخ این است که گرچه اختراع هواپیما قطعاً تحت تاثیر دستاور د های های صنعت اتومبیل بوده است؛ اما به هیچ وجه نمی توان گفت که هواپیما صرفاً حاصل بهینه سازی اتومبیل و یا فضاپیما حاصل بهینه سازی هواپیماست. در طبیعت هم عیناً همین روند حکم فرماست.
گونه های متکامل تری وجود دارند که نمی توان گفت صرفاً حاصل تکامل تدریجی گونه قبلی هستند.
در این میان آنچه شاید بتواند تا حدودی ما را در فهم این مساله یاری کند مفهومیست به نام تصادف یا جهش.
به عبارتی طرح هواپیما نسبت به طرح اتومبیل یک جهش بود و نه یک حرکت تدریجی. در طبیعت نیز به همین گونه است. در هر نسل جدید بعضی از خصوصیات به صورتی کاملاً تصادفی تغییر می یابند سپس بر اثر تکامل تدریجی که پیشتر توضیح دادیم در صورتی که این خصوصیت تصادفی شرایط طبیعت را ارضا کند حفظ می شود در غیر این صورت به شکل اتوماتیک از چرخه طبیعت حذف می گردد.
در واقع می توان تکامل طبیعی را به این صورت خلاصه کرد: جستجوی کورکورانه (تصادف یا Blind Search + )بقای قوی تر.
حال ببینیم که رابطه تکامل طبیعی با روش های هوش مصنوعی چیست. هدف اصلی روش های هوشمندِ به کار گرفته شده در هوش مصنوعی، یافتن پاسخ بهینه مسائل مهندسی است. بعنوان مثال اینکه چگونه یک موتور را طراحی کنیم تا بهترین بازدهی را داشته باشد یا چگونه بازو های یک ربات را متحرک کنیم تا کوتاه ترین مسیر را تا مقصد طی کند (دقت کنید که در صورت وجود مانع یافتن کوتاه ترین مسیر دیگر به سادگی کشیدن یک خط راست بین مبدا و مقصد نیست) همگی مسائل بهینه سازی هستند.
روش های کلاسیک ریاضیات دارای دو اشکال اساسی هستند. اغلب این روش ها نقطه بهینه محلی (Local Optima) را بعنوان نقطه بهینه کلی در نظر می گیرند و نیز هر یک از این روش ها تنها برای مساله خاصی کاربرد دارند. این دو نکته را با مثال های ساده های ای روشن می کنیم.
به شکل زیر توجه کنید. این منحنی دارای دو نقطه ماکزیمم می باشد. که یکی از آنها تنها ماکزیمم محلی است. حال اگر از روش های بهینه سازی ریاضی استفاده کنیم مجبوریم تا در یک بازه بسیار کوچک مقدار ماکزیمم تابع را بیابیم. مثلاً از نقطه ۱ شروع کنیم و تابع را ماکزیمم کنیم. بدیهی است اگر از نقطه ۱ شروع کنیم تنها به مقدار ماکزیمم محلی دست خواهیم یافت و الگوریتم ما پس از آن متوقف خواهد شد. اما در روش های هوشمند، به ویژه الگوریتم ژنتیک بدلیل خصلت تصادفی آنها حتی اگر هم از نقطه ۱ شروع کنیم باز ممکن است در میان راه نقطه A به صورت تصادفی انتخاب شود که در این صورت ما شانس دست یابی به نقطهبهینه کلی (Global Optima) را خواهیم داشت.
در مورد نکته دوم باید بگوییم که روش های ریاضی بهینه سازی اغلب منجر به یک فرمول یا دستورالعمل خاص برای حل هر مسئله می شوند. در حالی که روش های هوشمند دستورالعمل هایی هستند که به صورت کلی می توانند در حل هر مسئله ای به کار گرفته شوند. این نکته را پس از آشنایی با خود الگوریتم بیشتر و بهتر خواهید دید.
ژنتیک در طبیعت:
در زیست شناسی، ژن واحد اصلی ذخیره سازی در ژنتیک است درون سلول ها، ژن ها برای تولید کروموزوم به هم متصل شده اند. ساده ترین نوع تولید جنسی بین ارگان های یک موجود تک سلولی است. دو سلول برای تولید یک سلول جدید با دو دسته کروموزوم ترکیب می شوند. این سلول جدید "دولا نام دارد. این سلول بلافاصله دچار تقسیم سلولیC:UsersPublicPicturesساØ(r)ت Ù3/4اÙÚ¯Ø§Ù Ø¯Ø§ÙØ´ تÙÙÙØ¯ Ø±ÙØªØ§Ø± با Ø§Ø³ØªÙØ§Ø¯Ù ازاÙÚ¯ÙØ±ÙتÙ
تÚ(c)اÙ
Ù٠سÙÙ
باÙÙØ¬ÙØ³ÙØ³ _ Ø³ÙØ§Ø±Ø´ Ù3/4ÛØ§Ø¯Ù Ø³Ø§Ø²Û Ø§ÙØ¬Ø§Ù
Ù3/4رÙÚÙ Ù
ØªÙØ¨ matlab.htm – _ftn14 می شود. در تقسیم سلولی هر کدام از کروموزوم های سلول diploid یک کپی از خود می سازد. بعد گروه کروموزوم ها (جدید و اصلی) با هم ترکیب می شوند. بعد کروموزوم ها دو بار از هم جدا می شوند و چهار سلول diploid تولید می کنند. جهش می تواند در هر مرحله انجام شود. هر تغییری در کروموزوم به فرزندان به ارث می رسد.
سه نوع جهش در الگوریتم های ژنتیکی وجود دارد:
1-جهش نقطه ای:که در آن یک ژن تغییر می کند.
2-جهش کروموزوم: که در آن تعدادی از ژن های رشته کروموزوم به طور کامل از بین می روند.
3-جابجایی: که در آن بخشی از کروموزوم دچار تغییر می شود.
ایده اصلی الگوریتم ژنتیک:
در دهه هفتاد میلادی دانشمندی از دانشگاه میشیگان به نام جان هلند ایده استفاده از الگوریتم ژنتیک را در بهینه سازی های مهندسی مطرح کرد. ایده اساسی این الگوریتم انتقال خصوصیات موروثی توسط ژن هاست. فرض کنید مجموعه خصوصیات انسان توسط کروموزوم های او به نسل بعدی منتقل می شوند. هر ژن در این کروموزوم ها نماینده یک خصوصیت است. بعنوان مثال ژن ۱ می تواند رنگ چشم باشد، ژن ۲ طول قد، ژن ۳ رنگ مو و الی آخر. حال اگر این کروموزوم به تمامی، به نسل بعد انتقال یابد، تمامی خصوصیات نسل بعدی شبیه به خصوصیات نسل قبل خواهد بود. بدیهیست که در عمل چنین اتفاقی رخ نمی دهد. در واقع بصورت همزمان دو اتفاق برای کروموزوم ها می افتد. اتفاق اول جهش (Mutation) است. "جهش" به این صورت است که بعضی ژن ها بصورت کاملاً تصادفی تغییر می کنند. البته تعداد این گونه ژن ها بسیار کم می باشد اما در هر حال این تغییر تصادفی همانگونه که پیشتر دیدیم بسیار مهم است. مثلاً ژن رنگ چشم می تواند بصورت تصادفی باعث شود تا در نسل بعدی یک نفر دارای چشمان سبز باشد. در حالی که تمامی نسل قبل دارای چشم قهوه ای بوده اند. علاوه بر "جهش" اتفاق دیگری که می افتد و البته این اتفاق به تعداد بسیار بیشتری نسبت به "جهش" رخ می دهد چسبیدن دو کروموزوم از طول به یکدیگر و تبادل برخی قطعات بین دو کروموزوم است. این مساله با نام Crossover شناخته می شود. این همان چیزیست که باعث می شود تا فرزندان ترکیب ژنهای متفاوتی را (نسبت به والدین خود) به فرزندان خود انتقال دهند.
روشهای نمایش الگوریتم ژنتیک:
قبل از این که یک الگوریتم ژنتیک برای یک مسئله اجرا شود، یک روش برای کد کردن ژنوم ها به زبان کامپیوتر باید به کار رود. یکی از روش های معمول کد کردن به صورت رشته های باینری است: رشته های ۰و۱. یک راه حل مشابه دیگر کدکردن راه حل ها در آرایه ای از اعداد صحیح یا اعشاری است، که دوباره هر جایگاه یک جنبه از ویژگی ها را نشان می دهد. این راه حل در مقایسه با قبلی پیچیده تر و مشکل تر است. مثلاً این روش توسط استفان کرمر، برای حدس ساختار ۳ بعدی یک پروتئین موجود در آمینو اسیدها استفاده شد. الگوریتم های ژنتیکی که برای آموزش شبکه های عصبی استفاده می شوند، از این روش بهره می گیرند.
سومین روش برای نمایش صفات در یک GA یک رشته از حروف است، که هر حرف دوباره نمایش دهنده یک خصوصیت از راه حل است.
خاصیت هر ۳تای این روش ها این است که آنها تعریف سازنده ایی را که تغییرات تصادفی در آنها ایجاد می کنند را آسان می کنند: ۰ را به ۱ وبرعکس، اضافه یا کم کردن ارزش یک عدد یا تبدیل یک حرف به حرف دیگر.
یک روش دیگر که توسط John Koza توسعه یافت، برنامه نویسی ژنتیک (genetic programming)است. که برنامه ها را به عنوان شاخه های داده در ساختار درخت نشان می دهد. در این روش تغییرات تصادفی می توانند با عوض کردن عملگرها یا تغییر دادن ارزش یک گره داده شده در درخت، یا عوض کردن یک زیر درخت با دیگری به وجود آیند.
روشهای انتخاب الگوریتم زنتیک:
روش های مختلفی برای الگوریتم های ژنتیک وجود دارند که می توان برای انتخاب ژنوم ها از آن ها استفاده کرد. اما روش های لیست شده در پایین از معمول ترین روش ها هستند.
انتخاب Elitist:
مناسب ترین عضو هر اجتماع انتخاب می شودElitist Selection
انتخاب Roulette:
یک روش انتخاب است که در آن عنصری که عدد برازش (تناسب) بیشتری داشته باشد، انتخاب می شود. در واقع به نسبت عدد برازش برای هر عنصر یک احتمال تجمعی نسبت می دهیم و با این احتمال است که شانس انتخاب هر عنصر تعیین می شود.
انتخاب Scaling :
به موازات افزایش متوسط عدد برازش جامعه، سنگینی انتخاب هم بیشتر می شود و جزئی تر. این روش وقتی کاربرد دارد که مجموعه دارای عناصری باشد که عدد برازش بزرگی دارند و فقط تفاوت های کوچکی آن ها را از هم تفکیک می کند.
انتخاب Tournament:
یک زیر مجموعه از صفات یک جامعه انتخاب می شوند و اعضای آن مجموعه با هم رقابت می کنند و سرانجام فقط یک صفت از هر زیرگروه برای تولید انتخاب می شوند.
بعضی از روش های دیگر عبارتند از:
Hierarchical Selection Steady-State Selection, Rank Selection, Tournament Selection
عملگرهای الگوریتم ژنتیک:
در هر مسئله قبل از آنکه بتوان الگوریتم ژنتیک را برای یافتن یک پاسخ به کار برد به دو عنصر نیاز است:در ابتدا روشی برای ارائه یک جواب به شکلی که الگوریتم ژنتیک بتواند روی آن عمل کند لازم است. در روش سنتی یک جواب به صورت یکرشته از بیتها، اعداد یا نویسهها نمایش داده می شود. دومین جزء اساسی الگوریتم ژنتیک روشی است که بتواند کیفیت هر جواب پیشنهاد شده را با استفاده از توابع تناسب محاسبه نماید. مثلاً اگر مسئله هر مقدار وزن ممکن را برای یک کوله پشتی مناسب بداند بدون اینکه کوله پشتی پاره شود،یک روش برای ارائه پاسخ می تواند به شکل رشته ای از بیتهای ۰ و۱ در نظر گرفته شود، که ۱ یا ۰ بودن نشانه اضافه شدن یا نشدن وزن به کوله پشتی است. تناسب پاسخ، با تعیین وزن کل برای جواب پیشنهاد شده اندازه گیری می شود.
الگوریتم ژنتیک استاندارد:
الگوریتم ژنتیک استاندارد از مدل تولید جنسی haploid استفاده می کند. در GA استاندارد جمعیت مجموعه ای از گونه های عددی باینری مثل ۱۱۰۱۰۱۱ هستند. هر گونه یک رشته کروموزوم را نشان می دهد. تعدادی تابع وجود دارند که نشان می دهند که هر individual به چه میزانی مناسب است. تابع دیگری وجود دارد که individual ها را برای تولید مثل از جمعیت انتخاب می کند.
دو کروموزوم انتخاب شده با هم crossover می کنند و مجدد تقسیم می شوند. بعد از آن، دو individual جدید جهش می کنند. این کار به تعداد دفعات مشخصی تکرار می شود.
هر کدام از عملگرهای بالا را معرفی می کنیم:
-شایستگی: معیاری از خوب بودن کروموزوم است. یعنی چقدر این رشته کروموزوم مناسب فضای فعلی مسئله است و آن را حل می کند. برای الگوریتم ژنتیک استاندارد، شایستگی ، تابع f است از مجموعه کروموزوم های موجود به مجموعه اعداد حقیقی.
-انتخاب: عمل انتخاب یک زوج است برای عمل تولید مثل. تابع انتخاب می تواند هر تابع صعودی باشد. یکی از توابع موجود انتخاب fitness-proportionate است که تابع انتخاب آن تابع احتمال روی جمعیت {x1,..,xn} می باشد.
-Cross over : عمل جابجا کردن ژن بین دو individual در حال تولید است. گونه های زیادی از crossover وجود دارد ولی ما crossover یک نقطه ای را بررسی می کنیم. عدد تصادفی i بین یک و n انتخاب می شود. این عدد نقطه ای از رشته کروموزوم است که crossover با احتمال Pc، انجام می شود. اگر crossover انجام شود. در آن صورت بخشهای دو رشته کروموزوم تا نقطه i با هم جابجا می شوند. به عنوان مثال ۱۱۱۱۱۱۱۱ وقتی با رشته ۰۰۱۰۱۰۱۰ در i=4، crossover می کنند، دو رشته ۰۰۱۰۱۱۱۱ و ۱۱۱۱۱۰۱۰ را تولید می کنند.
-جهش : عمل تغییر کروموزوم به صورت تصادفی است. pm احتمالی است که بیت iام تغییر کند. که در آن i بین ۱ تا n است. برای هر i عدد تصادفی بین صفر و یک انتخاب می شود. اگر عدد بدست آمده از pm کمتر بود، در آن صورت، آن بیت تغییر می کند.
بخش سوم
الگوریتم کلونی زنبور عسل:
الگوریتم کلونی زنبور عسلبه انگلیسی:( Artificial bee colony algorithm) یک الگوریتم بهینه سازی بر اساس هوش جمعی و رفتار هوشمندانه جمعیت زنبور عسل است.
تئودور واس به استفاده از هوش جمعی زنبور در توسعه سیستم های مصنوعی با هدف حل مسایل پیچیده در ترافیک و حمل ونقل پیشنهاد داده است. تئودور واس همچنین پیشنهاد کرد بهینه سازی متا اکتشافی کلونی زنبور عسل (BCO) که قادر به حل قطعی مسائل ترکیبیات، و همچنین مسائل ترکیبی با مشخصه عدم قطعیت است.
شرح الگوریتم کلونی زنبور عسل:
الگوریتم زنبور به انگلیسی:( Bee Algorithm) شامل گروهی مبتنی بر الگوریتم جستجو است که اولین بار در سال ۲۰۰۵ میلادی توسعه یافت؛ این الگوریتم شبیه سازی رفتار جستجوی غذای گروه های زنبور عسل است. در نسخه ابتدایی این الگوریتم، الگوریتم نوعی از جستجوی محلی انجام می دهد که با جستجوی کترهای (تصادفی) ترکیب شده و می تواند برای بهینه سازی ترکیبی یا بهینه سازی تابعی به کار رود.
جستجوی غذا در طبیعت:
یک کلونی زنبور عسل می تواند در مسافت زیادی و نیز در جهت های گوناگون پخش شود تا از منابع غذایی بهره برداری کند. قطعات گلدار با مقادیر زیادی نکتار و گرده که با تلاشی کم قابل جمع آوری است، به وسیلهی تعداد زیادی زنبور بازدید می شود؛ به طوری که قطعاتی از زمین که گرده یا نکتار کمتری دارد، تعداد کمتری زنبور را جلب می کند. پروسهٔ جستجوی غذای یک کلونی به وسیله زنبورهای دیدهبان آغاز می شود که برای جستجوی گلزارهای امید بخش (دارای امید بالا برای وجود نکتار یا گرده) فرستاده می شوند. زنبورهای دیده بان به صورت کتره ای از گلزاری به گلزار دیگر حرکت می کنند. در طول فصل برداشت محصول (گل دهی)، کلونی با آماده نگه داشتن تعدادی از جمعیت کلونی به عنوان زنبور دیده بان به جستجوی خود ادامه می دهند. هنگامی که جستجوی تمام گلزارها پایان یافت، هر زنبور دیده بان، بالای گلزاری که اندوختهٔ کیفی مطمئنی از نکتار و گرده دارد، رقص خاصی را اجرا می کند. این رقص که به نام رقص چرخشی شناخته می شود، اطلاعات مربوط به جهت تکه گلزار (نسبت به کندو)، فاصله تا گلزار و کیفیت گلزار را به زنبورهای دیگر انتقال می دهد. این اطلاعات زنبورهای اضافی و پیرو را به سوی گلزار می فرستد. بیش تر زنبورهای پیرو به سوی گلزارهایی میروند که امید بخشتر هستند و امید بیش تری برای یافتن نکتار و گرده در آن ها وجود دارد. وقتی همهٔ زنبورها به سمت ناحیه ای مشابه بروند، دوباره به صورت تصادفی و به علت محدودهی رقصشان در پیرامون گلزار پراکنده می شوند تا به موجب این کار سرانجام نه یک گلزار، بلکه بهترین گلهای موجود درون آن تعیین موقعیت شوند. الگوریتم زنبور عسل هر نقطه را در فضای پارامتری – متشکل از پاسخ های ممکن- به عنوان منبع غذا تحت بررسی قرار می دهد. زنبورهای دیده بان – کارگزاران شبیه سازی شده – به صورت تصادفی فضای پاسخها را ساده میکنند و به وسیلهی تابع شایستگی کیفیت موقعیتهای بازدید شده را گزارش میدهند. جواب های ساده شده رتبه بندی می شوند و دیگر زنبورها نیروهای تازهای هستند که فضای پاسخ ها را در پیرامون خود برای یافتن بالاترین رتبه محل ها جستجو می کنند که گلزار نامیده می شود. الگوریتم به صورت گزینشی دیگر گلزارها را برای یافتن نقطهی بیشینهی تابع شایستگی جستجو می کند.
کاربردهای الگوریتم زنبور عسل:
برخی کاربردهای الگوریتم زنبور در مهندسی:
_آموزش شبکه عصبی برای الگوشناسی
_زمان بندی کارها برای ماشین های تولیدی
_دسته بندی اطلاعات
_بهینه سازی طراحی اجزای مکانیکی
_بهینه سازی چندگانه
_میزان کردن کنترل کننده های منطق فازی برای ربات های ورزشکار
بخش چهارم
الگوریتم مورچگان:
بهینه سازی گروه مورچه ها ACO
همانطور که می دانیم مسئله یافتن کوتاهترین مسیر، یک مسئله بهینه سازیست که گاه حل آن بسیار دشوار است و گاه نیز بسیار زمانبر. برای مثال مسئله فروشنده دوره گرد را نیز می توان مطرح کرد. در این روش(ACo)، مورچه های مصنوعی به وسیله حرکت بر روی نمودار مساله و با باقی گذاشتن نشانه هایی بر روی نمودار، همچون مورچه های واقعی که در مسیر حرکت خود نشانه های باقی می گذارند، باعث می شوند که مورچه های مصنوعی بعدی بتوانند راه حل های بهتری را برای مساله فراهم نمایند. همچنین در این روش می توان توسط مسائل محاسباتی-عددی بر مبنای علم احتمالات بهترین مسیر را در یک نمودار یافت.
پروسه پیدا کردن کوتاه ترین مسیر توسط مورچه ها، ویژگی های بسیار جالبی دارد، اول از همه قابلیت تعمیم زیاد و خود- سازمانده بودن آن است. در ضمن هیچ مکانیزم کنترل مرکزی ای وجود ندارد. ویژگی دوم قدرت زیاد آن است. سیستم شامل تعداد زیادی از عواملی است که به تنهایی بی اهمیت هستند بنابراین حتی تلفات یک عامل مهم، تاثیر زیادی روی کارآیی سیستم ندارد. سومین ویژگی این است که، پروسه یک فرایند تطبیقی است. از آنجا که رفتار هیچ کدام از مورچه ها معین نیست و تعدادی از مورچه ها همچنان مسیر طولانی تر را انتخاب می کنند، سیستم می تواند خود را با تغییرات محیط منطبق کند و ویژگی آخر اینکه این پروسه قابل توسعه است و می تواند به اندازهٔ دلخواه بزرگ شود. همین ویژگی ها الهام بخش طراحی الگوریتم هایی شده اند که در مسائلی که نیازمند این ویژگی ها هستند کاربرد دارند. اولین الگوریتمی که بر این اساس معرفی شد، الگوریتم ABC بود. چند نمونه دیگر از این الگوریتم ها عبارتند از:
AntNet،ARA،PERA،AntHocNet.
روش که از رفتار مورچه ها در یافتن مسیر بین محل لانه و غذا الهام گرفته شده؛ اولین بار در ۱۹۹۲ توسط مارکو دوریگو (Marco Dorigo) در پایان نامهٔ دکترایش مطرح شد.
الگوریتم کلونی مورچه الهام گرفته شده از مطالعات و مشاهدات روی کلونی مورچه هاست. این مطالعات نشان داده که مورچه ها حشراتی اجتماعی هستند که در کلونی ها زندگی می کنند و رفتار آنها بیشتر در جهت بقاء کلونی است تا درجهت بقاء یک جزء از آن. یکی از مهمترین و جالبترین رفتار مورچه ها، رفتار آنها برای یافتن غذا است و بویژه چگونگی پیدا کردن کوتاهترین مسیر میان منابع غذایی و آشیانه. این نوع رفتار مورچه ها دارای نوعی هوشمندی توده ای است که اخیراً مورد توجه دانشمندان قرار گرفته است در دنیای واقعی مورچه ها ابتدا به طور تصادفی به این سو و آن سو می روند تا غذا بیابند. سپس به لانه بر می گردند و ردّی از فرومون (Pheromone) به جا می گذارند. چنین ردهایی پس از باران به رنگ سفید در می آیند و قابل رویت اند. مورچه های دیگر وقتی این مسیر را می یابند، گاه پرسه زدن را رها کرده و آن را دنبال می کنند. سپس اگر به غذا برسند به خانه بر می گردند و رد دیگری از خود در کنار رد قبل می گذارند؛ و به عبارتی مسیر قبل را تقویت می کنند. فرومون به مرور تبخیر می شود که از سه جهت مفید است:
* باعث می شود مسیر جذابیت کمتری برای مورچه های بعدی داشته باشد. از آنجا که یک مورچه در زمان دراز راه های کوتاه تر را بیش تر می پیماید و تقویت می کند هر راهی بین خانه و غذا که کوتاه تر (بهتر) باشد بیشتر تقویت می شود و آنکه دورتر است کمتر.
* اگر فرومون اصلاً تبخیر نمی شد، مسیرهایی که چند بار طی می شدند، چنان بیش از حد جذّاب می شدند که جستجوی تصادفی برای غذا را بسیار محدود می کردند.
* وقتی غذای انتهای یک مسیر جذاب تمام می شد رد باقی می ماند.
لذا وقتی یک مورچه مسیر کوتاهی (خوبی) را از خانه تا غذا بیابد بقیهٔ مورچه ها به احتمال زیادی همان مسیر را دنبال می کنند و با تقویت مداوم آن مسیر و تبخیر ردهای دیگر، به مرور همهٔ مورچه ها هم مسیر می شوند. هدف الگوریتم مورچه ها تقلید این رفتار توسط مورچه هایی مصنوعی ست که روی نمودار در حال حرکت اند. مساله یافتن کوتاه ترین مسیر است و حلالش این مورچه های مصنوعی اند.
از کابردهای این الگوریتم، رسیدن به راه حل تقریباً بهینه در مسئله فروشنده دوره گرد است. به طوری که انواع الگوریتم مورچه ها برای حل این مساله تهیه شده. زیرا این روش عددی نسبت به روشهای تحلیلی و genetic در مواردی که نمودار مدام با زمان تغییر کند یک مزیت دارد؛ و آن این که الگوریتمی ست با قابلیت تکرار. و لذا با گذر زمان می تواند جواب را به طور زنده تغییر دهد. که این خاصیت در روتینگ شبکه های کامپیوتری و سامانه حمل و نقل شهری مهم است.
در مسئله فروشنده دوره گرد باید از یک شهر شروع کرده، به شهرهای دیگر برود و سپس به شهر مبدا بازگردد بطوریکه از هر شهر فقط یکبار عبور کند و کوتاهترین مسیر را نیز طی کرده باشد. اگر تعداد این شهرها n باشد در حالت کلی این مسئله از مرتبه (n-1)! است که برای فقط ۲۱ شهر زمان واقعاً زیادی می برد:
روز۱۰۱۳*۷/۱ =20! =2/433* 10ms = ۴۳۳/۲ * ۱۰۱۶ S
با انجام یک الگوریتم برنامه سازی پویا برای این مسئله، زمان از مرتبه نمایی بدست می آید که آن هم مناسب نیست. البته الگوریتم های دیگری نیز ارائه شده ولی هیچ کدام کارایی مناسبی ندارند. ACO الگوریتم کامل و مناسبی برای حل مسئله TSP است.
مزیتهای ACO:
تبخیر شدن فرومون واحتمال-تصادف به مورچه ها امکان پیدا کردن کوتاهترین مسیر را می دهد. این دو ویژگی باعث ایجاد انعطاف در حل هرگونه مسئله بهینه سازی می شوند. مثلاً در گراف شهرهای مسئله فروشنده دوره گرد، اگر یکی از یالها یا گره ها حذف شود الگوریتم این توانایی را دارد تا به سرعت مسیر بهینه را با توجه به شرایط جدید پیدا کند. به این ترتیب که اگر یال یا گره ای حذف شود دیگر لازم نیست که الگوریتم از ابتدا مسئله را حل کند بلکه از جایی که مسئله حل شده تا محل حذف یال (یا گره) هنوز بهترین مسیر را داریم، از این به بعد مورچه ها می توانند پس از مدت کوتاهی مسیر بهینه (کوتاهترین) را بیابند.
:ACOکاربردهای
از کاربردهای ACO می توان به بهینه کردن هر مسئله ای که نیاز به یافتن کوتاهترین مسیر دارد، اشاره نمود:
1-مسیر یابی داخل شهری و بین شهری
2-مسیر یابی بین پست های شبکه های توزیع برق ولتاژ بالا
3-مسیر یابی شبکه های کامپیوتری
انواع مختلف الگوریتم بهینه سازی مورچگان:
1-سیستم مورچه نخبگان: در این روش بهترین راه حل کلی در هر تکرار فرمون آزاد می کند. همچنین این روش برای تمام مورچه های مصنوعی باید انجام شود.
2-سیستم مورچه ماکسیموم – مینیمم: یک مقدار کمینه و بیشینه برای فرمون تعیین کرده و فقط در هر مرحله بهترین جواب این مقدار را آزاد می کند و تمام گره های مجاور ان به مقدار فرمون بیشینه به مقدار دهی اولیه می شوند.
3-سیستم کلونی مورچه: که در بالا توضیحات کافی داده شده است.
4-سیستم مورچه بر اساس رتبه: تمام راه حل های بدست آماده بر اساس طول جواب رتبه بندی می شوند و بر اساس همین رتبه بندی مقدار فرمون آزاد سازی شده توسط آنها مشخص خواهد شد و راه حل با طول کمتر از راه حل دیگر با طول بیشتر مقدار فرمون بیشتری آزاد می کند.
5-سیستم مورچه متعامد مداوم: در این روش مکانیزم تولید فرمون به مورچه اجازه می دهد تا برای رسیدن به جواب بهتر و مشترک با بقیه مورچه ها جستجو انجام دهد با استفاده از روش طراحی متعامد مورچه می تواند در دامنه تعریف شده خود به صورت مداوم برای بدست آوردن بهترین جواب جستجو کند که این عمل به هدف رسیدن به جواب بهینه و صحیح ما را نزدیک می کند. روش طراحی متعامد می تواند به دیگر روش های جستجو دیگر گسترش پیدا کنند تا به مزیت های این روش های جستجو اضافه کند.
بخش پنجم
الگوریتم رقابت استعماری (Imperialist Competitive Algorithm – ICA)
روشی در حوزه محاسبات تکاملی است که به یافتن پاسخ بهینه مسائل مختلف بهینه سازی می پردازد. این الگوریتم با مدلسازی ریاضی فرایند تکامل اجتماعی – سیاسی، الگوریتمی برای حل مسائل ریاضی بهینه سازی ارائه می دهد.
از لحاظ کاربرد، این الگوریتم در دسته الگوریتم های بهینه سازی تکاملی همچون الگوریتم های ژنتیک( Genetic Algorithms)، بهینه سازی انبوه ذرات (Particle Swarm Optimization)، بهینه سازی کلونی مورچگان(Ant Colony Optimization)، تبرید فلزات شبیه سازی شده (Simulated Annealing) و … قرار می گیرد. همانند همه الگوریتم های قرار گرفته در این دسته، الگوریتم رقابت استعماری نیز مجموعه اولیه ای از جوابهای احتمالی را تشکیل می دهد. این جوابهای اولیه در الگوریتم ژنتیک با عنوان "کروموزوم"، در الگوریتم ازدحام ذرات با عنوان "ذره" و در الگوریتم رقابت استعماری نیز با عنوان "کشور" شناخته می شوند. الگوریتم رقابت استعماری با روند خاصی که در ادامه می آید، این جوابهای اولیه (کشور ها) را به تدریج بهبود داده و در نهایت جواب مناسب مسئله بهینه سازی )کشور مطلوب) را در اختیار می گذارد.
پایه های اصلی این الگوریتم را سیاست همسان سازی (Assimilation)، رقابت استعماری (Imperialistic Competition) و انقلاب (Revolution) تشکیل می دهند. این الگوریتم با تقلید از روند تکامل اجتماعی، اقتصادی و سیاسی کشورها و با مدلسازی ریاضی بخشهایی از این فرایند، عملگرهایی را در قالب منظم به صورت الگوریتم ارائه می دهد که می توانند به حل مسائل پیچیده بهینه سازی کمک کنند. در واقع این الگوریتم جوابهای مسئله بهینه سازی را در قالب کشورها نگریسته و سعی می کند در طی فرایندی تکرار شونده این جواب ها را رفته رفته بهبود داده و در نهایت به جواب بهینه مسئله برساند.
امپریالیسم، در لغت به سیاست توسعه قدرت و نفوذ یک کشور در حوزه خارج از قلمرو شناخته شده برای آن، اطلاق می شود. یک کشور می تواند کشور دیگر را به طور قانونگذاری مستقیم و یا از طریق روش های غیر مستقیم، مثل کنترل کالاها و مواد خام، کنترل کند. مورد اخیر اغلب استعمار نو خوانده می شود. استعمار یک پدیده ذاتی در تاریخ بوده است. استعمار در مراحل ابتدایی، به صورت نفوذ سیاسی نظامی در کشورها و به صورت صرف استفاده از منابع زمینی، انسانی و سیاسی بوده است. بعضی مواقع نیز استعمار، به صرف جلوگیری از نفوذ کشور استعمارگر رقیب انجام می شد. به هر حال کشورهای استعمارگر رقابت شدیدی را برای به استعمار کشیدن مستعمرات همدیگر نشان می دادند.
مستقل از اثرات و تبعات مثبت و منفی آن، استعمار به عنوان یک فرایند ذاتی در تاریخ بشر ایجاد شد، و در عین وارد کردن خسارتهای جبران ناپذیر به زیربناهای اساسی یک کشور (خصوصاً زیربناهای فرهنگی) در بعضی موارد اثرات مثبتی را نیز برای کشورها مستعمره داشت.
از دید بهینه سازی، استعمار بعضی از کشورها را که در یک دره معمولی تمدن قرار داشتند، خارج کرده و آنها را به یک حوزه مینیمم دیگر برد که در بعضی موارد وضعیت این حوزه مینیمم بهتر از موقعیت قبلی کشور مستعمره بود. اما به هر حال این حرکت مستلزم پیشروی مستعمره در راستای محورهای مختلف اقتصادی و فرهنگی به سمت یک امپریالیست قویتر بود، یعنی از میان رفتن بعضی از ساختارهای فرهنگی و اجتماعی. شکل زیر حرکت یک مستعمره به سمت استعمارگر قوی را نشان می دهد. این روند در الگوریتم رقابت استعماری در قالب سیاست جذب مدلسازی می شود.
همانند دیگر الگوریتم های تکاملی، این الگوریتم، نیز با تعدادی جمعیت اولیه تصادفی که هر کدام از آنها یک "کشور" نامیده می شوند؛ شروع می شود. تعدادی از بهترین عناصر جمعیت (معادل نخبه ها در الگوریتم ژنتیک) به عنوان امپریالیست انتخاب می شوند. باقی مانده جمعیت نیز به عنوان مستعمره، در نظر گرفته می شوند. استعمارگران بسته به قدرتشان، این مستعمرات را با یک روند خاص که در ادامه می آید؛ به سمت خود می کشند. قدرت کل هر امپراطوری، به هر دو بخش تشکیل دهنده آن یعنی کشور امپریالیست (به عنوان هسته مرکزی) و مستعمرات آن، بستگی دارد. در حالت ریاضی، این وابستگی با تعریف قدرت امپراطوری به صورت مجوع قدرت کشور امپریالیست، به اضافه در صدی از میانگین قدرت مستعمرات آن، مدل شده است. با شکل گیری امپراطوری های اولیه، رقابت امپریالیستی میان آن ها شروع می شود. هر امپراطوری ای که نتواند در رقابت استعماری، موفق عمل کرده و بر قدرت خود بیفزاید (و یا حداقل از کاهش نفوذش جلوگیری کند)، از صحنه رقابت استعماری، حذف خواهد شد. بنابراین بقای یک امپراطوری، وابسته به قدرت آن در جذب مستعمرات امپراطوری های رقیب، و به سیطره در آوردن آنها خواهد بود. در نتیجه، در جریان رقابت های امپریالیستی، به تدریج بر قدرت امپراطوری های بزرگتر افزوده شده و امپراطوری های ضعیف تر، حذف خواهند شد. امپراطوری ها برای افزایش قدرت خود، مجبور خواهند شد تا مستعمرات خود را نیز پیشرفت دهند.
شکل دهی امپراطوری های اولیه:
در بهینه سازی، هدف یافتن یک جواب بهینه بر حسب متغیرهای مسئله، است.
ما یک آرایه از متغیرهای مسئله را که باید بهینه شوند، ایجاد می کنیم. در الگوریتم ژنتیک این آرایه، کروموزوم نامیده می شود. در اینجا نیز آن را یک کشور می نامیم. در یک مسئله بهینه سازی Nvar بعدی، یک کشور، یک آرایه به طول Nvar * 1 است. این آرایه به صورت زیر تعریف می شود.
country = [p1, p2, …, pNvar]
مقادیر متغیره ها در یک کشور، به صورت اعداد اعشاری نمایش داده می شوند. از دیدگاه تاریخی فرهنگی، اجزای تشکیل دهنده یک کشور را می توان ویژگی های اجتماعی- سیاسی آن کشور، همچون فرهنگ، زبان، ساختار اقتصادی و سایر ویژگی ها در نظر گرفت. شکل زیر نحوه تناظر متغیر های بهینه سازی مسئله با ویژگی های اجتماعی سیاسی را نشان می دهد.
برای شروع الگوریتم، تعداد Ncountry کشور اولیه را ایجاد می کنیم. تا Nimp از بهترین اعضای این جمعیت (کشورهای دارای کمترین مقدار تابع هزینه) را به عنوان امپریالیست انتخاب می کنیم. باقی مانده Ncol تا از کشورها، مستعمراتی را تشکیل می دهند که هرکدام به یک امپراطوری تعلق دارند. برای تقسیم مستعمرات اولیه بین امپریالست ها، به هر امپریالیست، تعدادی از مستعمرات را که این تعداد، متناسب با قدرت آن است، می دهیم.
حرکت مستعمره ها به سمت امپریالیست:
سیاست همگون سازی (جذب) با هدف تحلیل فرهنگ و ساختار اجتماعی مستعمرات در فرهنگ حکومت مرکزی انجام می گرفت. همانگونه که قبلاً نیز بیان شد، کشورهای استعمارگر، برای افزایش نفوذ خود، شروع به ایجاد عمران (ایجاد زیرساخت های حمل و نقل، تاسیس دانشگاه و …) کردند. به عنوان مثال کشورهایی نظیر انگلیس و فرانسه با تعقیب سیاست همگون سازی در مستعمرات خود در فکر ایجاد انگیس نو و فرانسه نو در مستعمرات خویش بودند. با در نظر گرفتن شیوه نمایش یک کشور در حل مسلئه بهینه سازی، در حقیقت این حکومت مرکزی با اعمال سیاست جذب سعی داشت تا کشور مستعمره را در راستای ابعاد مختلف اجتماعی سیاسی به خود نزدیک کند. این بخش از فرایند استعمار در الگوریتم بهینه سازی، به صورت حرکت مستعمرات به سمت کشور امپریالیست، مدل شده است.
انقلاب؛ تغییرات ناگهانی در موقعیت یک کشور:
بروز انقلاب تغییرات ناگهانی را در ویژگی های اجتماعی سیاسی یک کشور ایجاد می کند. در الگوریتم رقابت استعماری، انقلاب با جابجایی تصادفی یک کشور مستعمره به یک موقعیت تصادفی جدید مدلسازی می شود. انقلاب از دیدگاه الگوریتمی باعث می شود کلیت حرکت تکاملی از گیر کردن در دره های محلی بهینگی نجات یابد که در بعضی موارد باعث بهبود موقعیت یک کشور شده و آن را به یک محدوده بهینگی بهتری می برد.
جابجایی موقعیت مستعمره و امپریالیست:
در حین حرکت مستعمرات به سمت کشور استعمارگر، ممکن بعضی از این مستعمرات به موقعیتی بهتر از امپریالیست برسند (به نقاطی در تابع هزینه برسند که هزینه کمتری را نسبت به مقدار تابع هزینه در موقعیت امپریالیست، تولید می کنند)در این حالت، کشور استعمارگر و کشور مستعمره، جای خود را با همدیگر عوض کرده و الگوریتم با کشور استعمارگر در موقعیت جدید ادامه یافته و این این بار این کشور امپریالیست جدید است که شروع به اعمال سیاست همگون سازی بر مستعمرات خود می کند.
رقابت استعماری:
قدرت یک امپراطوری به صورت قدرت کشور استعمارگر، به اضافه درصدی از قدرت کل مستعمرات آن تعریف می شود.
قدرت یک امپراطوری به صورت قدرت کشور استعمارگر، به اضافه درصدی از قدرت کل مستعمرات آن تعریف می شود.
هر امپراطوری ای که نتواند بر قدرت خود بیفزاید و قدرت رقابت خود را از دست بدهد، در جریان رقابت های امپریالیستی، حذف خواهد شد. این حذف شدن، به صورت تدریجی صورت می پذیرد. بدین معنی که به مرور زمان، امپراطوری های ضعیف، مستعمرات خود را از دست داده و امپراطوری های قویتر، این مستعمرات را تصاحب کرده و بر قدرت خویش می افزایند. در الگوریتم رقابت استعماری، امپراطوری در حال حذف، ضعیف ترین امپراطوری موجود است. بدین ترتیب، در تکرار الگوریتم، یکی یا چند مورد از ضعیف ترین مستعمرات ضعیف ترین امپراطوری را برداشته و برای تصاحب این مستعمرات، رقابتی را میان کلیه امپراطوری ها ایجاد می کنیم. مستعمرات مذکور، لزوماً توسط قویترین امپراطوری، تصاحب نخواهند شد، بلکه امپراطوری های قویتر، احتمال تصاحب بیشتری دارند.
سقوط امپراطوری های ضعیف:
در جریان رقابت های امپریالیستی، خواه ناخواه، امپراطوریهای ضعیف به تدریج سقوط کرده و مستعمراتشان به دست امپراطوری های قوی تر می افتد. شروط متفاوتی را می توان برای سقوط یک امپراطوری در نظر گرفت. در الگوریتم پیشنهاد شده، یک امپراطوری زمانی حذف شده تلقی می شود که مستعمرات خود را از دست داده باشد.
شبه کد:
مراحل ذکر شده در بالا را می توان به صورت شبه کد ریز خلاصه کرد
1-چند نقطه تصادفی روی تابع انتخاب کرده و امپراطوری های اولیه را تشکیل بده.
2-مستعمرات را به سمت کشور امپریالیست حرکت بده (سیاست همسان سازی یا جذب).
3-عملگر انقلاب (Revolution) را اعمال کن.
4-اگر مستعمره ای در یک امپراطوری، وجود داشته باشد که هزینه ای کمتر از امپریالیست داشته باشد؛ جای مستعمره و امپریالیست را با هم عوض کن.
5-هزینه کل یک امپراطوری را حساب کن (با در نظر گرفتن هزینه امپریالیست و مستعمراتشان).
6-یک (یا چند) مستعمره از ضعیف ترین امپراطوری انتخاب کرده و آن را به امپراطوری ای که بیشترین احتمال تصاحب را دارد، بده.
7-امپراطوری های ضعیف را حذف کن.
8-اگر تنها یک امپراطوری باقی مانده باشد، توقف کن وگرنه به ۲ برو.
کاربردها:
در حالت کلی الگوریتم رقابت استعماری به هر نوع مسئله بهینه سازی بدون هیچ محدودیتی قابل اعمال است. همین موضوع باعث شده است تا از این الگوریتم در حل مسائل بسیاری در حوزه مهندسی برق، مکانیک، صنایع، مدیریت، عمران، هوش مصنوعی و غیره استفاده شود. به عنوان مثال از این الگوریتم با موفقیت در حل مسائل عملی بهینه سازی زیر استفاده شده است.
طراحی بهینه کنترل کننده برای سیستمهای صنعتی همچون سیستم چند ورودی – چند خروجی تبرید. و صنعتی ستون تقطیر.
-طراحی بهینه سیستم های پیشنهاد دهی هوشمند.
-طراحی بهینه آنتن های آرایه ای.
-حل مسائل برنامه ریزی تولید در حوزه مهندسی صنایع و مدیریت.
-یادگیری و تحلیل شبکه های عصبی مصنوعی.
-طراحی بهینه موتورهای القای خطی.
-طراحی استراتژی بهینه در نظریه بازیها برای رسیدن به نقطه تعادل نش.
-طراحی بهینه کنترل کننده های فازی.
-نتخاب و بهینه سازی سبد سهام.
– طراحی و بهینه سازی ترمودینامیکی مبدل های حرارتی صفحه-پره.
نسخه های دیگر:
موارد ذکر شده در این نوشتار، مربوط به نسخه اولیه ارائه شده از الگوریتم رقابت استعماری می باشد. پس از معرفی این الگوریتم که ابتدا فقط برای حل مسائل بهینه سازی پیوسته استفاده می شد، نسخه های دیگری نیز معرفی شدند که به حل مسائل گسسته و نیز ترکیبی می پرداختند.
بخش ششم
:)Google Zebra)الگوریتم گورخر گوگل
گوگل این بار هم یک الگوریتم جدید به نام گورخر (G.O.O.G.L.E Zebra) ارائه می دهد در حقیقت الگوریتم گورخر گوگل از آخرین الگوریتم های طراحی شده گوگل می باشد بررسی و از دور خارج کردن فروشگاه های اینترنتی بی کیفیت ونا معتبر و قلابی در محیط گوگل می باشد و موتورهای جستجوگر دیگر تابع این الگوریتم خواهند بود.
ماموریت اصلی الگوریتم جدید گورخر گوگل پاک کردن جامعه تجارت الکترونیکی و فروشگاه های اینترنتی جهان از تفاله های تجاری و بی کیفیت از فضای اینترنت می باشد.
با خرید آنلاین در حال رشد در هرماه و توسعه آن در تمام دنیا, مدیران گوگل و توسعه دهنده گان گوگل را بر این داشت این اعتیاد همه گیر به خرید اینترنتی را سرو سامان بدهند و به سمت درست هدایت کنند.و این بروزرسانی تجارت الکترونی توسط الگوریتم گورخر گوگل انجام خواهد گرفت. و بروز رسانی الگوریتم گورخر گوگل پایان کار مافیای اینترنتی در تجارت الکترونی می باشد و گوگل به سرعت به سمت حفاظت کردن از این امپراطوری رسانه و تجارت الکترونی قدم برمی دارد.
گوگل به سرعت به سمت یک سیستم غیر عمدی در نتایج جستجوی یک کلمه کلیدی خاص در ارتباط با سایت های الکترونی با کیفیت بالا پیش می رود و توجه گوگل بر این گونه سایت های با کیفیت می باشد, در نتیجه باعث لغو کردن و گرفتن رنکینگ بالا از این سایت بی کیفیت می شود. زیرا ۷۰% این گونه سایت های فروشگاهای اینترنتی بی کیفیت بوده و زباله اسپم می باشد
بطور رسمی یکی از جدیدترین روش بازاریابی برای شرکت گوگل یعنی تبلیغات کلیکی می باشد(Adwords Resellers) و یا راهی برای حفاظت کردن از تبلیغات کلیکی خود می باشد و مجبور کردن شرکتهای تجارت الکترونیکی و یک پارچه کردن این شرکت ها می باشد, و به نوعی سرچ ارگانیک را از زیر فشار تبلیغات کلیکی خارج می کند, و به عکس زیر توجه کنید نتایج جستجو بر اساس الگوریتم گورخر گوگل که بر فروشگاهای اینترنتی اعمال شده است.
معنی و مفهوم فروشگاهای اینترنتی :
طراحی یک سایت با محتوی قوی و قانع کننده الگوریتم گورخر گوگل بر درست بودن آن
داشتن وب سایت واکنش گرا (Responsive) وآماده سازی بستر مناسب برای استفاده تمامی کاربران از سایت با هر وسیله مورد استفاده آنها مانند: کامپیوترها, تبلت ها و تلفن های همراه و ….
اضافه کردن بررسی و بازبینی بار کد محصولات و تشویق تمامی فروشندگان برای انجام آن
پیشنهاد دادن محصولات با قیمت پایین ترو استفاده از کوپن های تخفیف برای تشویق خریداران
ایجاد مقایسه محصولات با دیگر سایت ها از لحاظ قیمت
قید شدن هزینه و سود فروشنده که روى بهاى کالا کشیده می شود مانند مالیات و …
اضافه کردن هویت حقیقی و حقوقی مالک سایت
سرعت لود و بارگذاری وب سایت باید بالا باشد
کم کردن مراحل خرید و عدم پیچیدگی آن برای خریداران از سایت
الگوریتم گورخر گوگل (Google Zebra) پایان کار بسیاری از فروشگاه ها و تجارت اینترنتی بی کیفیت خواهد بود و خارج کردن این فروشگاهای اینترنتی بی کیفیت از چرخه جستجو گوگل نتیجه کار این الگوریتم گورخر گوگل خواهد بود.
استاندارد مورد تائید الگوریتم گورخر گوگل برای فروشگاه های اینترنتی به شرح زیر می باشد :
داشتن گواهی دیجیتال سل برای تائید واقعی هویت و حفظ امنیت وب سایت و محتوی آن و برای تمامی خریداران
محصولات خریداری شده توسط خریداران از وب سایت باید کمتر از۹۰% زمان تخمین زده شده به دست مشتری برسد
محصولات باید با مبلغ واقعی فروخته شود و نه بصورت مجازی و پول شویی
لینک تمامی محصولات وب سایت باید در خود و از خود سایت و باشد و از سایت دیگر لینک نشده باشند
جایگزینی سریع و بروز رسانی محصولات فروخته شده
فروشگاه باید یک سیستم هوشمند و یک پارچه برآورد هزینه های حمل و نقل داشته باشد
لیست و لینک علاقه مندی های خریدارن باید وجود داشته باشد و خریدار بتواند خرید خود را در هر زمانی که دوست دارد انجام دهد و و لینک به تعویق انداختن خرید بدون پاک شدن ایتم های خرید داری شده وجود داشته باشد.
بروز رسانی و جایگزینی محصولات بعد از قرار گرفتن محصولات در سبد خریداران
هر فروشگاه موظف است روشی بسیار شفاف و ساده برای پیگیری کالاهای خریداری شده برای کاربران ایجاد کند
آدرس فیزیکی سایت باید واقعی باشد و راه های تماس خریداران و فروشگاه ها واضح و روشن باشد
خریدران باید بتوانند به راحتی در سایت ثبت نام کنند و در سایت لاکین شوند و تمامی سبد خرید خود را در آنجا داشته باشند
فروشگاه باید یک برچسب خرید بر روی کالاهای خود با تمامی مشخصات محصولات و شرکت ارائه دهنده داشته باشد
هدیه برای خریداران و کسانی که در سایت ثبت نام می کنند.
قرار گرفتن در لیست فروشگاهای مورد اعتماد گوگل
قرارگرفتن در لیست فروشگاه های مورد اعتماد گوگل یعنی تابع قوانین الگوریتم گورخر گوگل شدن می باشد که فروشگاهای اینترنتی باید دارای ویژگی خاص چون پانصد معامله در ماه داشته باشند و راندمان %۹۰ حمل و نقل درست کالا, به دست خریداران داشته باشند و ارائه خدمات با کیفیت عالی و رضایت مندی کاربران. البته در لیست مورد اعتماد گوگل قرار گرفتن برای فروشگاه کوچک زیاد مورد تاکید نیست ولی مورد الگوریتم گورخر گوگل در استاندارد بودن این فروشگاه ها بر اساس این الگوریتم %۱۰۰ الزامی می باشد
مکان فیزیکی فروشگاهای اینترنتی
یکی از موارد مورد تاکید گوگل در الگوریتم گورخر خود مشخص بودن و حقیقی بودن ساختمان فیزیکی فروشگاهای اینترنتی در بخش وسیع می باشد و جلوگیری از هر نوع دلال گری و کلاهبرداری به اسم شرکت واقعی و شرکت غیر واقعی دراین بین می باشد. با وجود محبوبیت شدید خرید اینترنتی تمامی خریداران ترجیح می دهند از جای خرید اینترنتی انجام بدهند که فروشگاه مورد نظر دارای مکان فیزیکی باشد, و به راحتی شکایات خود را ابراز کنند.
و خدمات الگوریتم گورخر گوگل باعث بهبود و بالا رفتن کیفیت وب سایت فروشگاه های اینترنتی و باعث بهینه سازی وب سایت شده و کاربران یک خرید راحت و بهتر را تجربه می کنند
هدف از این به روز رسانی گورخرگوگل این است که خرید آنلاین کارآمد تر صورت گیرد. و تنها وب سایت های با کیفیت بالا و دارای استاندارد گوگل از حملات الگوریتم گورخر گوگل در امان خواهند ماند.
داشتن پشتیبانی آنلاین (Live Chat)
هدف اصلی الگوریتم گورخر گوگل افزایش سطح راحتی برای خریداران آنلاین می باشد و یک" گفتگو زنده" راه حل موثر در افزایش راحتی و رضایت مندی مشتریان می باشد.
داشتن سیاست شفاف در فروشگاه
یکی از سیاست های واضح الگوریتم گورخر گوگل حفاظت از حقوق "حریم خصوصی" و "شرایط و ضوابط" مصرف کننده گان فروشگاه های اینترنتی می باشد و همه این شرکت ها باید مطابق با سیاست های گوگل همسو باشد.
همسو بودن تبلیغات فروشگاه ها با مسیر تبلیغات
تبلیغات شما در شبکه های اجتماعی باید همسو با محصولات ارائه شده از طرف شما باشد. و نباید تبلیغات شما نا مرتبط با محصولات شما باشد.
بخش هفتم
الگوریتم پاندای گوگل:
پاندا یکی از الگوریتم های جدید گوگل است که ارائه شده است. پاندا برای تغییر دادن رتبه سایتها، حذف اسپم ها و سایتهایی که دارای محتوای قدیمی و یا کپی شده مورد استفاده قرار می گیرد.
"گوگل پاندا" (Google Panda) سلسله تغییراتی است که از اواخر فوریه 2011 (اسفند 1389) در الگوریتم نمایش نتایج جستجو در گوگل اعمال شد و همچنان ادامه دارد. این تغییرات با هدف کاهش رتبه سایت های "کیفیت پایین" دنبال می شود و سایت های باکیفیت را در بالای صفحه نمایش نتایج جستجو نشان می دهد.
در اثر این تغییرات، بسیاری از وب سایت های خبری و شبکه های اجتماعی در جستجوی گوگل در جایگاه بالاتری قرار گرفتند و در مقابل سایت هایی که حجم بسیار زیادی آگهی تبلیغاتی در خود جای داده بودند به رده های پایین سقوط کردند. بر این اساس طبق اعلام گوگل، در اولین نسخه گوگل پاندا چیزی در حدود 12 درصد از تمام نتایج جستجوی این موتور جستجو تحت تاثیر این تغییرات قرار گرفت.
روبات های crawler گوگل، زمانی که در فضای وب می چرخند تمامی وب سایت ها و لینک هایی که به این محیط اضافه می شوند را شناسایی کرده و همه آن ها را به یک ایندکس غول پیکر اضافه می کنند. هر صفحه ای که ایندکس می شود از الگوریتمی عبور داده می شود که شاخصه های متعدد رتبه بندی گوگل را در بر دارد. این شاخصه ها تعیین می کنند که این صفحه در کجای رتبه بندی گوگل و در کدام صفحه نمایش نتایج جستجو باید قرار گیرد. اما جای پاندا در الگوریتم جستجوی گوگل کجاست؟ پاندا در بالای این الگوریتم می نشیند تا ناخالصی ها را جدا کند.
پیش از این، سایت های کیفیت پایین زیادی با کپی برداری از مطالب دست اول سایت های دیگر، رتبه خود را در صفحه نمایش نتایج جستجو در گوگل به خوبی ارتقاء داده بودند. اما پاندا به دنبال مطالب دست اول و تولیدی وب سایت هاست و رتبه وب سایت هایی که دارای اینگونه مطالب باشند را ارتقاء می دهد و در برابر، رتبه سایت هایی که از سایت های دیگر کپی برداری می کنند و مطالب کیفیت پایین منتشر می کنند را کاهش می دهد.
با این دید، آیا به راستی گوگل پاندا در راستای منافع کاربران اینترنت موفق عمل کرده است؟ نتایج حاصل از برخی تحقیقات انجام شده موید این مسئله است. مجله نیوساینتیست در شماره 15 دسامبر 2011 خود به بررسی این موضوع پرداخت. در بررسی انجام شده از تعدادی کاربران اینترنت خواسته شد در دو مرحله در ماه های مارس و آگوست 2011، در موتورهای جستجوی گوگل و بینگ 50 جستجوی از پیش تعیین شده را انجام دهند تا مشخص شود آیا این دو موتور جستجو واقعا طبق اعلام خود موفق شده اند کاربران را از شر "علفزارهای محتوا" (content farm) نجات دهند یا خیر. علفزار محتوا اصطلاحی است که برای وب سایت هایی به کار برده می شود که نویسنده های زیادی دارند که بی محابا مطلب منتشر می کنند اما بیشتر مطالب آن ها کپی برداری از مطالب تولیدی وب سایت های دیگر است. اغلب، مطالب منتشر شده در این گونه وب سایت ها بدون ذکر منبع آورده می شوند و از اعتبار لازم نیز برخوردار نیستند و به نحوی انتخاب می شوند که با جستجوی های انجام شده در موتورهای جستجو به خوبی همخوانی داشته باشند. این وب سایت ها تنها به دنبال کشاندن کاربران به سوی خود، بالا بردن بازدید روزانه و بالا بردن رتبه خود در میان نتایج جستجو هستند. هدف اصلی در پس این سایت ها، سودجویی از طریق جذب کلیک و در نتیجه آگهی بیشتر است.
در چارچوب بررسی انجام شده توسط کارشناسان نیوساینتیست، جستجوهایی از این دست انجام شد: "چطور برای ماراتون تمرین کنیم؟" پیش از این، نتایج جستجو برای این گونه عبارت ها اغلب کاربران را به سایت هایی هدایت می کرد که هدف اصلی آن ها نمایش آگهی های تبلیغاتی بود و بس. این گونه سایت ها، در بررسی نیوساینتیست سایت های "کیفیت پایین" در نظر گرفته شدند. نتیجه جالب این که مثلا در مورد جستجوی "تمرین برای ماراتون" در ماه مارس 2011 (چند روز بعد از اعمال اولین نسخه از گوگل پاندا) سایت هایی در 10 رتبه بالای جستجوی گوگل نمایش داده می شدند که محل تبلیغ کفش های دو ماراتون، لوازم ورزشی و اجناسی از این دست بودند. جستجوهای انجام شده در ماه آگوست (مرحله دوم، یعنی شش ماه پس از معرفی گوگل پاندا) به وضوح نتایج دیگری در بر داشت؛ رتبه های بالای صفحه نتایج جستجو این بار در اختیار وب سایت های با کیفیت و معتبر بود؛ مثلا در مورد همین عبارت مورد جستجو، وب سایت مجله دنیای دونده اکنون به صفحه اول آمده و بالاتر از دیگر نتایج قرار گرفته بود. با بررسی 50 جستجوی انجام شده توسط کاربران متعدد، مشخص شد گوگل و بینگ در غربالگری وب سایت ها موفق عمل کرده بودند.
مشکل علفزارهای محتوا، در میان وب سایت های فارسی زبان نیز به وفور وجود دارد. البته شواهد نشان می دهد طی ماه های اخیر پاندای گوگل به خوبی در میان وب سایت های فارسی زبان نیز دست به کار شده و کاربران را از دست وب سایت هایی که پر از محتوای نامربوط وآگهی های تبلیغاتی بودند نجات داده است. پیش از این، در جستجوی عبارت های "عمومی" در گوگل، معمولا به راحتی می توانستید از خیر چند نتیجه اول صفحه نمایش نتایج جستجو بگذرید، چرا که رتبه های بالای نتایج جستجو اغلب در اختیار وب سایت های کیفیت پایین و تبلیغاتی بود.
نحوه انتخاب اسم الگوریتم
الگوریتم گوگل پاندا عنوان خود را از نام خانوادگی یکی از مهندسان اصلی این پروژه در شرکت گوگل گرفته است؛ ناونیت پاندا. گوگل جزئیات زیادی در مورد نحوه عملکرد الگوریتم جستجوی خود منتشر نمی کند، و شاید یکی از رموز موفقیت آن در برابر رقبا را باید در همین نکته دید. با این وجود، وبلاگ رسمی وب مستر گوگل بر روی Blogspot تاکنون با وب مسترها مهربان بوده و گاه به گاه نکاتی را در مورد شاخصه های مورد نظر پاندا در دست چین کردن و رتبه بندی وب سایت ها منتشر می کند. به طور مثال در بخشی از یکی از پست های این وبلاگ آمده است
"محتوای کیفیت پایین در بخش هایی از سایت می تواند روی رتبه کل سایت تاثیر بگذارد."
بر اساس این شاخصه، بدون شک باید فکری به حال محتوای کیفیت پایین که ممکن است مدت ها قبل بر روی وب سایت خود منتشر کرده اید نیز باشید؛ یا آن ها را اصلاح کنید یا آن ها را برای همیشه از روی وب سایت خود حذف کنید.
گوگل اغلب بدون اطلاع قبلی الگوریتم پاندا را به روز می کند و سپس معمولا از طریق گفته های غیررسمی می توان از این مسئله باخبر شد و نهایتا با تاخیر می توان تایید مسئولان گوگل در مورد آپدیت جدید این الگوریتم را گرفت. وب مسترها همیشه تغییرات و آپدیت های پاندای گوگل را رصد می کنند. اما چرا اطلاع از زمان آپدیت های گوگل پاندا برای وب مسترها از اهمیت بالایی برخوردار است؟ در این میان نکته مهمی وجود دارد و آن تفاوت در عملکرد الگوریتم پاندا نسبت به الگوریتم کلی جستجو در گوگل است. در حالت عادی با اضافه شدن یک لینک به یک وب سایت، روبات های crawler گوگل به آن سر می زنند و آن را ایندکس می کنند. این موضوع در مورد سایت هایی که رتبه بالایی دارند بلافاصله انجام می شود و سایت هایی که رتبه پایین تری دارند، معمولا از یک تا چند روز باید صبر کنند تا لینک آن ها نیز ایندکس شود و در نتایج جستجو نمایش داده شود.
باز گردیم به سوال؛ چرا اطلاع از زمان آپدیت های گوگل پاندا برای وب مسترها اهمیت دارد؟ همانطور که اشاره شد پاندا عملکردی متفاوت دارد؛ پاندا با هر بار آپدیت سری به وب سایت ها می زند و بر اساس شاخصه های خود (که ممکن است به روز شده باشند یا خیر) وب آن ها را رتبه بندی می کند. در این زمان، وب سایت های زیادی ارتقاء پیدا می کنند و بسیاری نیز مورد غضب پاندا قرار می گیرند و سقوط می کنند. تا آپدیت بعدی پاندا – که طبق سابقه گاهی ممکن است از چند روز تا دو ماه متغیر باشد – وب سایت هایی که دچار کاهش بازدید شده اند باید خود را با شاخصه های پاندا به روز کنند تا بار دیگر رتبه خود را به دست آورند. مراجعه کنید
افرادی که در بهینه سازی وب سایت برای موتور های جستجوگر تخصص دارند حتما تغییرات چشمگیر رتبه و رنک سایتهای مختلف را مشاهده کرده اند. سایت هایی که تا دیروز در صفحه نخست جستجوی گوگل حضور داشتند، هم اکنون دیگر به چشم نمی خورند! تمام این سیاستها به خاطر ضعف گوگل در جستجو ها بود.
با ورود الگوریتم پاندا دیگر از سایت هایی که {کپی برداری میکنند و یا اطلاعات نامربوط در اختیار بازدید کنندگان میگذارند} خبری نیست. میتوان اینگونه بیان کرد که، پاندا برای سالم سازی وب سایت ها با مطالب با کیفیت ایجاد شده است.
حفظ رتبه سایت
برای اینکه وب سایت شما ترافیک و رتبه خود را در گوگل از دست ندهد باید مواردی را که پاندا به آن حساسیت دارد را رعایت کنید که برخی از این موارد به شرح ذیل میباشد :
1-صفحات تکراری با کلمات کلیدی یکسان نداشته باشید
2-لینکهای یکسان در دایرکتوری های وب ندهید.
3-مطالب قدیمی را حذف یا ویرایش کنید و وب سایت خود را بروز نگه دارید.
4-کپی مطالب از سایتهای دیگر ممنوع.
5-مطالب با کیفیت پایین را از سایت خود حذف کنید
6-بنرهای تبلیغاتی بیش از حد در سایت نداشته باشید.
7-در میان مطالب خود تصاویری اضافه نمایید چراکه بازدیدکنندگان نیز برای خواندن مطلب شما وقت بیشتری را درسایت سپری میکنند و پاندا این را دوست دارد.
8-تمام این موارد و بسیاری دیگر باید در طراحی سایت شما رعایت شوند.
اگر بخواهیم ارتقاء و سقوط وب سایت ها را در اثر آپدیت های گوگل پاندا ببینیم، بد نیست به بررسی انجام شده توسط وب سایت searchmetrics.com در مورد تاثیر آپدیت 2.5 پاندا که در اواخر سپتامبر 2011 از سوی گوگل اعمال شد نگاهی داشته باشیم. در این آپدیت هم مثل آپدیت های قبلی، برخی وب سایت های امریکایی جزء بازنده ها بودند و برخی دیگر جزء برنده های میدان جستجو. در تصویر زیر آدرس دومین برخی از این وب سایت ها آمده است. همچنین درصد رشد و یا سقوط آن ها نیز مشخص شده است.
بخش هشتم
الگوریتم تکاملی سیمبیوتیک(SEA):
می دانیم در الگوریتم ژنتیکی عملگر ترکیب این وظیفه را دارد که ویژگی های شخصیتی والدین را از کروموزوم های آنها استخراج نموده و آنها را تحت ترکیب جدیدی در فرزندان قرار دهد به امید اینکه فرزندان ویژگی های خوب والدین خود را داشته باشند. انجام این عمل مستلزم داشتن شکل کروموزوم و عمل ترکیب مناسب است.
می دانیم که در ترکیب دو رشته کرموزوم، عمل انتخاب ژن ها از والدین برای تولید فرزند، بسیار مهم است. یک ترکیب مناسب آن است که ژن های "خوب" را در والدین انتخاب نماییم. ولی ما از کجا می توانیم تشخیص دهیم در یک رشته کروموزوم کدام ژن ها خوب هستند و کدام مناسب نیستند؟ علاوه بر این، مشکل دیگر این است که اگر برای یک موقعیت در کروموزوم هر دو والدین ژن خوب وجود داشته باشند، از کجا می توانیم تشخیص دهیم که کدام کروموزوم را برای مقداردهی به این موقعیت باید انتخاب کنیم؟ روشهای مختلفی برای حل این مشکلات ارائه شده است. یکی از این راه حل ها استفاده از ایده داشتن کروموزوم های ناقص است.
SEA نیز از این ایده برای رفع مشکل استفاده می کند. قبل از بیان الگوریتم SEA لازم است که نوعی عملگر ترکیب که در این الگوریتم استفاده می شود را معرفی کنیم.
عملگر ترکیب سیمبیوتیک:
عملگر symbiotic بر اساس عمل symbiogenesis طراحی شده است. در طبیعت symbiogenesis عمل تولید گونه جدید از انضمام ژنتیکی یک ارگان به نام symbionts میباشد. این انضمام ژنتیکی با عملگر تولید مثل که باعث انتقال ویژگی های ژنتیکی می شود، متفاوت است. در عملگر ترکیب معمولی، تولید مثل بین دو والد از یک گونه انجام می شود. عمل انتقال ژن به فرزند به طور کاملاً اختصاصی انجام می شود. یعنی برای یک موقعیت خاص اگر یک والد در آنجا ژنوم را داشته باشد،آن ژن از والد دیگر به ارث برده نمیشود. برعکس در ترکیب symbiotic، ترکیب میتواند بین گونه های والد مختلف انجام شود، این عملگر می تواند باعث یکپارچگی کامل یک ژنوم شود، ترکیب حاصل از این ادغام شدن می تواند ژن های یکی از والد را داشته باشد و درعین حال هر تعداد ژنی که بخواهد از والد دیگر بخواهد.
بنابراین عملگر ترکیب symbiotic به این صورت عمل می کند که دو کروموزوم که به طور ناقص تعریف شده اند را با هم ترکیب کرده و فرزندی با ترکیب ویژگی های دو کروموزوم اولیه ایجاد می کند.
ایده کلی SEA:
هر موقعیت ژنی با شکل مجزایی بیان شده است. و هر مقدار، با یک شکل خاص برای پر کردن این موقعیت ها نمایش داده شده است. هر کروموزوم کامل باید فقط و تنها فقط یک نمونه از اشکال موجود برای موقعیت ها را داشته باشد و هر کدام از این موقعیت ها تنها باید با یک شکل خاص پر شده باشند.
در الگوریتم کلی، هر کروموزوم با یک موقعیت (یک بیت) تعریف شده شروع به کار می کند (قدم ۱) در آغاز هر دوره با استفاده از عملگر ترکیب symbiotic از روی کروموزوم ها، ترکیبات مختلفی ساخته می شوند. (قدم ۲) هر کدام از ترکیبات نشان دهنده یک کروموزوم کامل است و در نتیجه این کروموزوم ها را می توان سنجید (قدم ۳) بعد از این که ترکیبات سنجیده شدند، آن اعضایی که خوب نبودند ازجمع کروموزم ها خارج می شوند (قدم ۴) بعد از این مرحله برای زیاد کردن شانس انتخاب مجدد کروموزوم خوب، از آن کپی هایی ساخته می شود (قدم ۵). در حین کار کپی کردن، بخشهایی از کروموزوم خوب به هم متصل می شوند تا کروموزوم ها به طور دقیق تر مشخص شوند. همچنین هر بخش از این کروموزوم هم می تواند با احتمالی جهش کند و کروموزوم جدید بسازد (قدم ۶)
بعد از این مرحله تمام کروموزم هایی که کپی شدند، جهش پیدا کرده اند و همچنین آن کروموزم هایی که در مرحله قبل شرکت نداشته اند، تحت عنوان جمعیت جدید برای دوره بعد اجرای الگوریتم انتخاب می شوند، دوره جدیدی از الگوریتم از قدم ۲ شروع می شود.
بخش نهم
الگوریتم پنگوئن گوگل
گوگل پنگوئن نامی رسمی میباشد برای الگوریتم جدید گوگل که در تاریخ ۲۴ آپریل سال ۲۰۱۲ منتشر شد.هدف از این الگوریتم جدید برخورد با وبسایت هایی میباشد که در آنها اصولی که گوگل به انها اعتقاد دارد رعایت نشده است.توجه اصلی گوگل به وبسایت هایی میباشد که در انها اصول Black Hat SEO رعایت شده است و این اصول براساس Google's Webmaster Guidelines تعریف میشوند.از این نوع تکتیک ها میتوان به Keyword Stuffing , Cloacking و شرکت در تبادل لینک هایی که به نام Link Schemes معروف هستند اشاره کرد.
گوگل اعلام کرده است که این الگوریتم جدید تا کنون نزدیک به ۳.۱ درصد از نتایج زبان انگلیسی و حدود ۳ درصد از زبان هایی مانند آلمانی و عربی را تحت تاثیر قرار داده است.البته این درصد در زبان هایی که محتوای اسپم ( Spammy Content ) انها بیشتر است بیشتر میباشد.
آپدیت پنگوئن
دومین اپدیت پنگوئن در تاریخ ۲۵ می کار خود را شروع کرد و طبق گفته مسئولان گوگل در حدود یک دهم درصد از نتایج زبان انگلیسی را تحت تاثیر قرار داده است.
اولین سوالی که پرسیده میشود در مورد این اپدیت جدید این میباشد که آیا فرقی میان پنگوئن و پاندا وجود دارد؟
اولین هدف از ایجاد پاندا برخورد با وبسایت هایی بود که باعث میشدند کاربر در آنها احساس راحتی نکند.این احساس ناراحتی را میتوان در بخش های مختلفی از اپدیت های پاندا مشاهده کرد مانند اپدیتی که در ژانویه ۲۰۱۲ انجام شد و در ان برخورد با وبسایت هایی انجام شد که تبلیغات فراوان داشتند ( Page Layout Algorithm Update )
و یا برخورد به وبسایت هایی که دارای محتوای ضعیف هستند ( Poor Content ).میتوان گفت این الگوریتم کاربر محور بود.
اما در الگوریتم پنگوئن اپدیت ها زیاد کاربر محور نمیباشد هرچند تاثیر مستقیم ان بر نتایج جستوجوهای کاربران میباشد اما گوگل سعی دارد در این اپدیت سایت هایی که واقعا اسپم هستند و سعی در گول زدن گوگل دارند را حذف کند.
سوال مهم تر و اخر هم این میباشد که چگونه از مشکلات پیش آمده سرافراز خارج شویم؟ چگونه Recovery کنیم؟
در انجمن Warrior Forum یک پاسخ جالب به این پرسش داده شده است:
پاسخ به این سوال این میباشد که به بازدیدی که از طرف گوگل به سمت شما می آید اهمیت ندهید و براساس آن برنامه ریزی نکنید.سعی کنید به جای گوگل با کاربران و همکاران خود رابطه برقرار کنید.نظر دادن در وبلاگ های دیگران و ارسال پست مهمان میتواند برای ایجاد محبوبیت در مدت زمان کم میتواند بسیار مفید باشد.اما نکته اینجاست که شما در این مدت به گوگل اهمیت نمیدهید اما کم کم گوگل به شما اهمیت میدهد.
مقالات بسیاری در مورد ریکاوری از پنگوئن منتشر شد اما واقعا میتوان متن بالا را راهکاری برای ریکاوری از تمام اپدیت ها دانست.
اما به طور کلی دلایل و روش های ریکاوری از این اپدیت ( پنگوئن ) را میتوان در موارد زیر دسته بندی کرد:
۱. بهینه سازی بیش از اندازه ( Over Optimization ) این میتواند اولین دلیل و به نظر من رایج ترین دلیل برای تمامی وبسایت ها باشد.بسیاری از وبمستران ما با مباحث سئو آشنا نیستند و وقتی هم که آشنا میشوند روش استفاده از آن را نمیدانند.به طور مثال بسیاری براین باور هستند که تک تک اصول سئو باید در یک وبسایت رعایت شود به طور مثال خیلی دقت میکنند که از تگ h1 بیشتر از یک بار در هر صفحه استفاده نشود این موضوع بد نیست اما یکی از مدیران گوگل در پاسخ به این سوال که آیا بیشتر از یکی بودن بد است یا نه گفت در وبلاگ خودش بیشتر از ۲ تگ h1 در یک صفحه دارد.این مورد و موارد مشابه از جمله مواردی هستند که به انها بهینه سازی بیش از جد گفته میشود. میتوان گفت شما سایتی بهینه سازی کرده اید که اصلا برای کاربر نمیباشد و فقط هدف شما خوشحال کردن موتورهای جستوحو میباشد.
شما باید متوحه باشید در ایجاد هر وبسایتی یک هدف دلیل اصلی ایجاد آن میباشد.اگر هدف اول شما راضی کردن موتورهای جستوجو باشد و سعی کنید خودتان را به شکلی نشان بدهید که بهترین هستید به این کار شما Over Optimization گفته میشود.
برای ریکاوری از این مشکل قبل از وبسایت خودتان را چک کنید ببینید واقعا شما در وبسایتتان Over Optimization انجام داده اید؟ اگر پاسخ مثبت است راه خود را عوض کرده و به سمت ایجاد محتوای جدید بروید.
۲. درصد بالای Anchor text یکسان یکی دیگر از دلایلی است که در اپدیت پنگوئن شما را دچار مشکل خواهد کرد.این مشکل بیشتر در وبسایت های خدماتی میباشد.به طور مثال شما ممکن است در بخش طراحی وبسایت مشغول به فعالیت باشد و در پایین تمامی قالب هایی که طراحی کرده اید یک متن یکسان با نام شرکتتان زده باشید.این ممکن است برای شما مشکل ایجاد کند.سعی کنید زیاد با Anchor text ها بازی کنید یعنی آن ها را تغییر بدهید و یکسان ننویسید. وبسایت Search Engine Watch آماری منشتر کرده است که در ان اشاره کرده اگر ۶۰ درصد Anchor Text ها یکسان باشد شما Penalized خواهید شد.
۳. لینک های فوتر ( Footer Links ) نسبتا مشابه مورد شماره ۲ میباشد اما با این تفاوت که لینک هایی که در این بخش قرار میگیرد میتواند هر نوع لینکی باشد از لینک های داخلی تا خارجی.توجه داشته باشید که اگر از لینک های Random استفاده کنید بهترین حالت میباشد و همچنین با ۱ یا ۲ لینک هم کار شما به Penalized ختم نخواهد شد.
۴. لینک های اسپم ( Spammy Links ) این مورد هم بسیار رایج میباشد متاسفانه جمعیت بزرگی از وبمسترها فارسی زبان هر جا لینک میبینند که رایگان هست لینک وبسایت خود را آنجا ثبت میکنند.رایج ترین این مشکلات زمانی است که به دایرکتوری هایی برمیخورند که لینک را رایگان ثبت می کنند و فکر میکنند هر دایرکتوری Dmoz است.این بدترین اشتباه ممکن است زیرا بسیاری از این لینک ها اسپم هستند و ارزشی ندارند.
تا قبل از الگوریتم پنگوئن گوگل میگفت ما فقط لینک های خوب را مورد بررسی قرار میدهیم و از لینک های بد و ضعیف میگذریم.اما در این الگوریتم گفت تمامی لینک ها بررسی میشود و براساس اهمیت و قدرت ( Authority ) به انها امتیاز داده میشود.برای ریکاوری از این مشکل شما باید با ابزارهای گوناگونی مانند Open Site Explorer یا Ahrefs لینک های ورودی خود را بررسی کنید و انهایی که ضعیف هستند حذف کنید.بله باید لینک های خود را حذف کنید تعجیب نکنید.
۴ مورد بالا دلایل اصلی Penalize شدن وبسایت ها میباشد.اما دلایلی مانند لینک های ورودی از وبسابت های غیرفعال و یا لینک از مطالب نامرتبط یا لینک های داخلی ضعیف هم جزو مواردی هستند که در بعضی وبسایت ها به انها اشاره شده است.
حال این بخش صحبت ما با انهایی میباشد که مشکلی نداشته اند با پنگوئن اما حس میکنند از موارد بالا که ذکر کردیم در وبسایت انها ممکن است باشد.اول از همه سریعا مشکل را حذف کنید دچار نشدن به مشکل به معنی دور بودن از چشمان گوگل نیست.
اما شاید شما شامل هیچ کدام از حالت های بالا نباشد و یک White Hat میانه رو باشید برای شما هم توصیه هایی داریم:
الف) سعی کنید از وبلاگ های هم موضوع و از پست های هم موضوع لینک بگیرید.
ب) اهمیت Google Webmaster Tools را فراموش نکنید و حداقل هفته ۲ ۳ بار به آن سر بزنید و تغییرات را همیشه آنالیز کتید.
ج) پاک سازی مطالب دوقلو ( Duplicate Content ) را سریعا انجام دهید.سعی کنید بین مطالب ارتباط برقرار کنید.
د) حداقل ماهی یک بار لینک های خود را دوباره بررسی کنید و لینک های اسپم و ضعیف را حذف کتید.