در این پست سورس کد الگوریتم ژنتیک GA در پایتون Python قرار گرفته شده است. این سورس کد به زبان پایتون Python برای الگوریتم ژنتیک نوشته شده است. این سورس کد بر اساس 12 توابع تست الگوریتم GA را اجرا می کند. برای اینکه بتوانید مسئله الگوریتم ژنتیک را واضح و کامل درک کنید مقاله ای کامل با عنوان الگوریتم ژنتیک در همین سایت آماده کرده ایم که می توانید مطالعه کنید. در ادامه مختصری از الگوریتم برای درک کد الگوریتم GA در پایتون بیان می شود.
برنامهنویس: تیم برنامه نویسی پی استور
متشکل از اساتید و فارغ التحصیلان رشته های فنی - مهندسی
تیم برنامه نویسی پی استور یکی از اولین گروه های تشکیل شده در مجموعه آموزشی پی استور می باشد. این تیم از اساتید مجرب و فارغ التحصیلان رشته های فنی و مهندسی تشکیل شده که در زمینه های مختلف برنامه نویسی و تهیه سورس کد فعال هستند.
الگوریتم ژنتیک
الگوریتم ژنتیک روشی برای بهینه سازی با جستجوی وسیع است و کارکرد آن بر اصول انتخاب طبیعی حاکم بر ژنتیک طبیعی استوار است. ایده این الگوریتم از نظریه تکامل داروین الهام گرفته شده است. اگرچه این الگوریتم روشی برای جستجوی تصادفی است، ویژگی های خاص آن موجب می شود که نتوان آن را یک جستجوی تصادفی ساده قلمداد کرد. در این الگوریتم اطلاعات تاریخی از چگونگی تکامل، به شکلی کارا استخراج شده و در روند جستجو استفاده می شود. الگوریتم ژنتیک روشی قدرتمند بوده و بر روی دسته وسیعی از مسائل بهخوبی عمل می کند.
الگوریتم ژنتیک واقعی که بر اساس ایده ی تکامل بیولوژیکی در طبیعت عمل می نمایند، بر روی جمعیتی از راه حل های بالقوه یا کروموزوم ها که هر یک می توانند بهعنوان پاسخی از مسئله تلقی شوند، با اعمال عملگرهای ژنتیکی به جستجوی راه حل نهایی می پردازند. در الگوریتم ژنتیکی، بسیاری از مکانیزم هایی که در زیست شناسی وجود دارد، نظیر انتخاب ژن برتر، ترکیب ژن ها، جهش ژن ها، مهاجرت افراد جمعیت، محلی بودن گونه ها و … شبیه سازی می شوند. در این الگوریتم ها، جستجو بر روی مجموعه هایی از راه حل ها بهصورت موازی انجام می شود، درحالیکه در روش های سنتی جستجو بهصورت ترتیبی است.
نحوه کار الگوریتم
در آغاز الگوریتم، تعدادی از افراد بهعنوان جمعیت اولیه و معمولاً بهصورت تصادفی ساختهشده و معیاری از کیفیت به نام تابع هدف یا برازندگی برای تک تک آن ها ارزیابی می شود. اگر شرط رسیدن به جواب برقرار نباشد (به جواب بهینه نرسیده باشیم)، نسل بعدی با انتخاب والدین بر اساس میزان برازندگی آن ها تولید می شود. در هر نسل، بهترین های آن نسل انتخاب می شوند و پس از زادوولد، مجموعه جدیدی از فرزندان را تولید می کنند.
کروموزوم های موجود در جمعیت بر اساس مقدار برازندگی بهعنوان والد انتخاب می شوند. سپس تولید مثل، بین جفت کروموزوم ها انجام می گیرد تا فرزندان ایجاد شوند و فرزندان با احتمالی ثابت دچار جهش می شوند. سپس میزان برازندگی فرزندان جدید محاسبهشده و جمعیت جدید، از جایگزینی فرزندان با والدین ایجاد می شود و جمعیت ایجادشده جدید بهعنوان نسل بعدی شناخته میشود و فرایند تکرار می شود.
در این فرایند، افراد مناسب تر با احتمال بیشتری در نسل های بعد باقی خواهند ماند و این فرایند تا برقرار شدن شرط خاتمه تکرار می شود. الگوریتم زمانی پایان خواهد یافت که بهبودی بر روی جواب ها صورت نگیرد و یا اینکه تعداد مشخصی نسل تولید شود.
کد ژنتیک با پایتون
سورس کد الگوریتم GA در پایتون شامل توابعی است که اسکریپت GA.py در واقع کد اصلی برنامه می باشد و بقیه فراخوانی ها از آنجا انجام می شود. توابع تست برای این الگوریتم 12 تابع می باشد که از معروف ترین آنها در زیر تعدادی را مشاهده می کنید.
- تابع SPHERE
- تابع ACKLEY
- تابع SUM SQUARES
- تابع ROSENBROCK
- تابع SUM OF DIFFERENT POWERS
- تابع ZAKHAROV
- تابع Rastrigin
توابع تست برای ارزیابی الگوریتم های بهینه سازی بکار می روند که در این سایت برای توضیحات بیشتر در مورد توابع تست الگوریتم های بهینه سازی مقاله ای آماده کردیم. توابع زیادی برای تست عملکرد الگوریتم های بهینه سازی وجود دارد که در اینجا ما به این 7 تابع اکتفا کرده ایم ولی در سورس کد با 12 نوع تابع مختلف (همانند مقاله) ارزیابی شده است.
همچنین لازم به ذکر است که برای اجرای الگوریتم بهینه سازی روی مسئله مورد نظر تابع هزینه یا Cost Function آن تغییر خواهد کرد و بقیه الگوریتم دست نخورده باقی می ماند بنابراین برای اجرای الگوریتم GA در پایتون برای بهینه سازی مسئله خودتان تابع هزینه خود را بر اساس پارامترهای مسئله خود تعریف کنید.
قسمت هایی از سورس کد الگوریتم ژنتیک در پایتون
iters=500 lb=-100 ub=100 dim=30 popSize=50 cp = 1 #crossover Probability mp = 0.01 #Mutation Probability keep = 2; # elitism parameter: how many of the best individuals to keep from one generation to the next if not isinstance(lb, list): lb = [lb] * dim if not isinstance(ub, list): ub = [ub] * dim bestIndividual=numpy.zeros(dim) scores=numpy.random.uniform(0.0, 1.0, popSize) bestScore=float("inf") ga = numpy.zeros((popSize, dim)) for i in range(dim): ga[:, i]=numpy.random.uniform(0,1,popSize) * (ub[i] - lb[i]) + lb[i] convergence_curve=numpy.zeros(iters) for l in range(iters): #crossover ga = crossoverPopulaton(ga, scores, popSize, cp, keep) #mutation mutatePopulaton(ga, popSize, mp, keep, lb, ub) ga = clearDups(ga, lb, ub) scores = calculateCost(ga, popSize, lb, ub) bestScore = min(scores) #Sort from best to worst ga, scores = sortPopulation(ga, scores)
ویدیو معرفی محصول
*** توجه ***
قبل از اجرای سورس کد الگوریتم در محیط پایتون حتماً از نصب پکیج های مورد استفاده در این سورس کد در Python خود مطمئن شوید پکیج های استفاده شده در این سورس کد numpy و matplotlib می باشد که اولی پکیج مربوط به استفاده از آرایه ها و ماتریس ها در پایتون و دومی مربوط به عملیات های نموداری و Plot گرفتن می باشد. پیشنهاد ما نصب اسپایدر (Spyder (Python 3.7 می باشد که هم پایتون و پکیج های مختلف و هم IDE های مختلفی را همراه با امکان آپدیتشان نصب می کند.
درباره محصول
سورس کد الگوریتم ژنتیک GA در پایتون Python عنوان محصولی است که در این پست به آن پرداخته شده است. محصول در پایتون و با IDE اسپایدر (Spyder (Python 3.7 نوشته شده و بصورت کامل توسط گروه پشتیبانی پی استور تست و اجرا شده است. محصول دارای نشان تضمین کیفیت پی استور می باشد. برای دانلود محصول آن را خریداری کنید.
مباحث مرتبط با سورس کد الگوریتم ژنتیک
سورس کدهای آماده الگوریتم های مشابه در پایتون
تاریخ انتشار: | 4 آذر 1398 |
---|---|
تاریخ بروزرسانی: | 16 مهر 1399 |
حجم فایل: | 5.1 کیلوبایت |
فرمت فایل | py. در قالب پایتون |
نسخه: | 1.0 |
هماهنگی با: | (Spyder (Python 3.8 و بالاتر |
تاکنون 490 نفر این محصول را تهیه کرده اند و 2 نظر برای آن ثبت شده است.
نظرات و دیدگاه ها
قوانین ثبت دیدگاه
- لطفاً دیدگاه های خود را فارسی تایپ کنید.
- دیدگاه های نامرتبط به مطلب تایید نخواهد شد.
- از درج دیدگاه های تکراری پرهیز نمایید.
- سوالات تخصصی خودتان را از طریق تیکت پشتیبانی مطرح کنید.
قیمت 49,000 تومان
تاریخ انتشار: | 4 آذر 1398 |
---|---|
تاریخ بروزرسانی: | 16 مهر 1399 |
حجم فایل: | 5.1 کیلوبایت |
فرمت فایل | py. در قالب پایتون |
نسخه: | 1.0 |
هماهنگی با: | (Spyder (Python 3.8 و بالاتر |
2 بازخورد (مشاهده نظرات)
قیمت: 49,000 تومان
هادی
ایول دمتون گرم ???
مدیریت و پشتیبانی
نظرات و پیشنهادات خود را با ما در میان بگذارید.