|
|
||
|---|---|---|
| .. | ||
| Diophantine.ipynb | ||
| Genetic.ipynb | ||
| README.md | ||
README.md
الگوریتمهای ژنتیکی
پرسشنامه قبل از درس
الگوریتمهای ژنتیکی (GA) بر اساس یک رویکرد تکاملی در هوش مصنوعی بنا شدهاند، که در آن از روشهای تکامل یک جمعیت برای یافتن یک راهحل بهینه برای یک مسئله مشخص استفاده میشود. این الگوریتمها در سال 1975 توسط جان هنری هالند پیشنهاد شدند.
الگوریتمهای ژنتیکی بر اساس ایدههای زیر عمل میکنند:
- راهحلهای معتبر برای مسئله میتوانند به صورت ژنها نمایش داده شوند.
- ترکیب (Crossover) به ما اجازه میدهد دو راهحل را با هم ترکیب کنیم تا یک راهحل معتبر جدید به دست آوریم.
- انتخاب (Selection) برای انتخاب راهحلهای بهینهتر با استفاده از یک تابع تناسب (Fitness Function) استفاده میشود.
- جهش (Mutation) برای ایجاد تغییرات و جلوگیری از گیر افتادن در کمینه محلی معرفی میشود.
برای پیادهسازی یک الگوریتم ژنتیکی، به موارد زیر نیاز دارید:
- یافتن روشی برای کدگذاری راهحلهای مسئله با استفاده از ژنها g∈Γ
- تعریف یک تابع تناسب روی مجموعه ژنها Γ به صورت fit: Γ→R. مقادیر کوچکتر تابع نشاندهنده راهحلهای بهتر هستند.
- تعریف مکانیزم ترکیب برای ترکیب دو ژن و ایجاد یک راهحل جدید به صورت crossover: Γ2→Γ.
- تعریف مکانیزم جهش به صورت mutate: Γ→Γ.
در بسیاری از موارد، الگوریتمهای ترکیب و جهش، الگوریتمهای سادهای برای دستکاری ژنها به صورت دنبالههای عددی یا بردارهای بیتی هستند.
پیادهسازی خاص یک الگوریتم ژنتیکی ممکن است از موردی به مورد دیگر متفاوت باشد، اما ساختار کلی آن به صورت زیر است:
- انتخاب یک جمعیت اولیه G⊂Γ
- به صورت تصادفی یکی از عملیات ترکیب یا جهش را برای این مرحله انتخاب کنید.
- ترکیب:
- به صورت تصادفی دو ژن g1, g2 ∈ G را انتخاب کنید.
- ترکیب را محاسبه کنید g=crossover(g1,g2)
- اگر fit(g)<fit(g1) یا fit(g)<fit(g2) باشد، ژن مربوطه در جمعیت را با g جایگزین کنید.
- جهش - یک ژن تصادفی g∈G را انتخاب کرده و آن را با mutate(g) جایگزین کنید.
- از مرحله 2 تکرار کنید تا زمانی که مقدار تابع تناسب به اندازه کافی کوچک شود یا محدودیت تعداد مراحل به پایان برسد.
وظایف معمول
وظایفی که معمولاً با الگوریتمهای ژنتیکی حل میشوند شامل موارد زیر هستند:
- بهینهسازی زمانبندی
- بستهبندی بهینه
- برش بهینه
- تسریع جستجوی جامع
✍️ تمرینها: الگوریتمهای ژنتیکی
یادگیری خود را در نوتبوکهای زیر ادامه دهید:
به این نوتبوک بروید تا دو مثال از استفاده الگوریتمهای ژنتیکی را ببینید:
- تقسیم عادلانه گنج
- مسئله 8 وزیر
نتیجهگیری
الگوریتمهای ژنتیکی برای حل بسیاری از مسائل، از جمله مسائل لجستیکی و جستجو، استفاده میشوند. این حوزه از تحقیقاتی الهام گرفته شده است که موضوعات روانشناسی و علوم کامپیوتر را با هم ترکیب کردهاند.
🚀 چالش
"الگوریتمهای ژنتیکی ساده پیادهسازی میشوند، اما رفتار آنها دشوار است که درک شود." منبع تحقیقی انجام دهید و یک پیادهسازی از الگوریتم ژنتیکی مانند حل یک پازل سودوکو پیدا کنید و توضیح دهید که چگونه کار میکند، به صورت یک طرح یا نمودار جریان.
پرسشنامه بعد از درس
مرور و مطالعه شخصی
این ویدئوی عالی را تماشا کنید که در مورد نحوه یادگیری کامپیوتر برای بازی کردن سوپر ماریو با استفاده از شبکههای عصبی آموزشدیده توسط الگوریتمهای ژنتیکی صحبت میکند. ما در بخش بعدی بیشتر در مورد یادگیری کامپیوتر برای بازی کردن این نوع بازیها یاد خواهیم گرفت. در بخش بعدی.
تکلیف: معادله دیوفانتین
هدف شما حل معادله موسوم به دیوفانتین است - معادلهای با ریشههای صحیح. برای مثال، معادله a+2b+3c+4d=30 را در نظر بگیرید. شما باید ریشههای صحیحی که این معادله را ارضا میکنند پیدا کنید.
این تکلیف از این پست الهام گرفته شده است.
نکات:
- میتوانید ریشهها را در بازه [0;30] در نظر بگیرید.
- به عنوان یک ژن، میتوانید از لیست مقادیر ریشهها استفاده کنید.
از Diophantine.ipynb به عنوان نقطه شروع استفاده کنید.
سلب مسئولیت:
این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator ترجمه شده است. در حالی که ما تلاش میکنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفهای انسانی توصیه میشود. ما مسئولیتی در قبال سوء تفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.