|
|
||
|---|---|---|
| .. | ||
| Diophantine.ipynb | ||
| Genetic.ipynb | ||
| README.md | ||
README.md
جینیاتی الگوردمز
لیکچر سے پہلے کا کوئز
جینیاتی الگوردمز (GA) ایک ارتقائی طریقہ کار پر مبنی ہیں، جس میں کسی مسئلے کے لیے بہترین حل حاصل کرنے کے لیے آبادی کے ارتقاء کے طریقے استعمال کیے جاتے ہیں۔ یہ 1975 میں جان ہنری ہالینڈ نے پیش کیے تھے۔
جینیاتی الگوردمز درج ذیل خیالات پر مبنی ہیں:
- مسئلے کے درست حل کو جینز کے طور پر ظاہر کیا جا سکتا ہے۔
- کراس اوور ہمیں دو حلوں کو یکجا کرنے کی اجازت دیتا ہے تاکہ ایک نیا درست حل حاصل کیا جا سکے۔
- سلیکشن کسی فٹنس فنکشن کے ذریعے زیادہ بہتر حل منتخب کرنے کے لیے استعمال ہوتا ہے۔
- میوٹیشنز کو شامل کیا جاتا ہے تاکہ آپٹیمائزیشن کو غیر مستحکم کیا جا سکے اور مقامی کم از کم سے باہر نکلا جا سکے۔
اگر آپ جینیاتی الگوردم کو نافذ کرنا چاہتے ہیں، تو آپ کو درج ذیل کی ضرورت ہوگی:
- ہمارے مسئلے کے حل کو جینز 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 سے دہرائیں، جب تک کہ ہمیں fit کی کافی چھوٹی قدر نہ مل جائے، یا جب تک کہ مراحل کی تعداد کی حد تک نہ پہنچ جائے۔
عام کام
جینیاتی الگوردمز کے ذریعے عام طور پر حل کیے جانے والے کاموں میں شامل ہیں:
- شیڈول کی اصلاح
- بہترین پیکنگ
- بہترین کٹنگ
- مکمل تلاش کو تیز کرنا
✍️ مشقیں: جینیاتی الگوردمز
اپنی تعلیم کو درج ذیل نوٹ بکس میں جاری رکھیں:
اس نوٹ بک پر جائیں تاکہ جینیاتی الگوردمز کے دو مثالیں دیکھ سکیں:
- خزانے کی منصفانہ تقسیم
- 8 کوئینز کا مسئلہ
نتیجہ
جینیاتی الگوردمز کو بہت سے مسائل حل کرنے کے لیے استعمال کیا جاتا ہے، بشمول لاجسٹکس اور تلاش کے مسائل۔ یہ میدان نفسیات اور کمپیوٹر سائنس کے موضوعات کو یکجا کرنے والی تحقیق سے متاثر ہے۔
🚀 چیلنج
"جینیاتی الگوردمز کو نافذ کرنا آسان ہے، لیکن ان کے رویے کو سمجھنا مشکل ہے۔" ماخذ۔ جینیاتی الگوردم کے کسی نفاذ کو تلاش کرنے کے لیے تحقیق کریں، جیسے کہ سوڈوکو پہیلی کو حل کرنا، اور وضاحت کریں کہ یہ کیسے کام کرتا ہے، ایک خاکہ یا فلو چارٹ کے طور پر۔
لیکچر کے بعد کا کوئز
جائزہ اور خود مطالعہ
یہ شاندار ویڈیو دیکھیں جو بتاتی ہے کہ کمپیوٹر جینیاتی الگوردمز کے ذریعے تربیت یافتہ نیورل نیٹ ورکس کا استعمال کرتے ہوئے سپر ماریو کھیلنا کیسے سیکھ سکتا ہے۔ ہم سیکھیں گے کہ کمپیوٹر اس طرح کے کھیل کھیلنا کیسے سیکھتا ہے اگلے سیکشن میں۔
اسائنمنٹ: ڈائیوفینٹائن مساوات
آپ کا مقصد نام نہاد ڈائیوفینٹائن مساوات کو حل کرنا ہے - ایک مساوات جس کے جذر عددی ہوں۔ مثال کے طور پر، مساوات a+2b+3c+4d=30 پر غور کریں۔ آپ کو وہ عددی جذر تلاش کرنے ہیں جو اس مساوات کو پورا کرتے ہیں۔
یہ اسائنمنٹ اس پوسٹ سے متاثر ہے۔
اشارے:
- آپ جذر کو وقفہ [0;30] میں سمجھ سکتے ہیں۔
- جین کے طور پر، جذر کی قدروں کی فہرست استعمال کرنے پر غور کریں۔
Diophantine.ipynb کو بطور نقطہ آغاز استعمال کریں۔