این “توضیحانه” در مورد این پست دکتر مجیدی عزیز است: روند تدریجی تکامل را در یک عکس تجربه کنید.

الگوریتم ارایه شده در این صفحه یک تصویر را به کمک روی هم گذاشتن ۵۰ شش ضلعی (؟) ِ شفاف Transparent بازسازی می کند. برای حل این مساله، که اساسا یک مساله ی بهینه سازی دشوار است، از الگوریتم ژنتیک استفاده می شود.

ga_image.jpg

بطور خلاصه، در یک الگوریتم ژنتیک، “راه حل” بصورت یک کروموزوم کد می شود که از تعدادی ژن تشکیل شده است. در مساله ی ما، گوشه های چندضلعی ها، رنگ آنها، و میزان شفافیت آنها، ژنهای مساله هستند (بنظر می رسد از شش ضلعی استفاده شده است). با فشردن Export DNA این ساختار را ببینید.

طبق توضیح صفحه، در هر “نسل” یک ژن بطور تصادفی تغییر می کند و اگر این تغییر “مناسب” بود حفظ می شود. به همین دلیل شما evolving یعنی موجود فعلی  و best  یعنی بهترین موجود تاحال را می بینید. تعریف “بهترین” در این مساله “شبیه ترین به تصویر داده شده به لحاظ پیکسلی” است.

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

الگوریتم نوشته شده همینطور به شدت خشن است و بنظر می رسد تنها بهترین بچه را حفظ می کند. در عمل مناسب است که بچه های “نسبتا خوب” هم شانس زندگی داشته باشند. با اینحال، کد نوشته شده نمایش تصویری بسیار جالبی از نحوه ی عمل یک الگوریتم ژنتیک ارایه می دهد.