توضیحات
در این قسمت تیم کدگیت سورس الگوریتم ژنتیک در جاوا را تهیه کرده است. الگوریتم ژنتیک یک الگوریتم تکاملی است که معمولاً در مسائل بهینه سازی از آن استفاده میشود. ایده اصلی این الگوریتم از تئوری تکامل میباشد که در آن نسل گونههای برتر ادامه پیدا کرده و گونههای ضعیفتر توسط طبیعت حذف میشوند. با ما همراه باشید تا کد الگوریتم ژنتیک را به شما معرفی کنیم. همچنین پیشنهاد میکنیم از دیگر کدهای ما دیدن فرمایید:
سورس الگوریتم ژنتیک در جاوا
همانطور که گفتیم الگوریتم ژنتیک از ایده تکامل کمک گرفته است. در این الگوریتم ابتدا یک جمعیتی از یک گونه(individuals) تعریف میشوند. سپس با کمک تابع ارزیابی (fitness) میزان تطابق آنها با شرایط اندازهگیری میشود. آن گونههایی که تطبیق پذیر تر بوده از خود فرزندی را تولید کرده و جایگزین گونههای ضعیف میکنند. این روال آنقدر ادامه پیدا میکند تا به شرط پایان الگوریتم برسیم.
نحوه فرزندآوری گونه ها بدین صورت است که دو گونه انتخاب میشود و با کمک فرآیند Crossover و Mutation فرزند جدیدی با کمک ژنهای هردو گونه تولید میشود. پس از آن فرزند جدید به احتمال قوی نسبت به شرایط تطبیق پذیر تر بوده و احتمال حذف آن بسیار کمتر میشود چراکه ویژگیهای خود را از دو ژن برتر به ارث برده است. تمام این فرآیندی که با یکدیگر بررسی کردیم در سورس کد الگوریتم ژنتیک پیاده سازی گردیده است.
در سورس پیاده سازی گردیده هر گونه شامل 20 ژن میباشد. ژنها اعداد صفر یا یک هستند. هدف پیدا کردن گونهای است که همه ژنهای آن عدد یک باشند. جمعیت ما در این مسئله 5 عدد است و بعد از ایجاد 5 گونه به صورت تصادفی مسئله آغاز میشود و الگوریتم ژنتیک سعی در بهبود گونها دارد به طوریکه تمام ژنهای یک گونه عدد یک باشد. بعد از رسیدن به شرط پایان الگوریتم متوقف میشود.
نحوه اجرا سورس الگوریتم ژنتیک در جاوا
زبان برنامه نویسی کد الگوریتم ژنتیک، جاوا میباشد. بعد از تهیه این سورس کد فایلی با فرمت zip در اختیار شما قرار میگیرد. فایل را از حالت zip خارج کنید تا سورسها را ببینید. فایلی با نام SimpleDemoGA.java فایلی اصلی برنامه بوده و با اجرای آن، الگوریتم ژنتیک اجرا خواهد شد. بعد از اجرای برنامه خروجی برنامه به صورت زیر خواهد بود(البته دقت کنید ما یک iteration را چاپ کردیم):
Generation: 21 Fittest score: 19
==Genetic Pool==
Individual 0 | [genes=[1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1]] |
ndividual 1 | [genes=[1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]] |
Individual 2 | [genes=[1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]] |
Individual 3 | [genes=[1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]] |
ndividual 4 | [genes=[1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]] |
================