জেনেটিক অ্যালগরিদম (GA) একটি বিবর্তনমূলক পদ্ধতির উপর ভিত্তি করে তৈরি, যেখানে একটি সমস্যার জন্য সর্বোত্তম সমাধান পেতে জনসংখ্যার বিবর্তনের পদ্ধতি ব্যবহার করা হয়। এটি ১৯৭৫ সালে জন হেনরি হল্যান্ড দ্বারা প্রস্তাবিত হয়েছিল।
জেনেটিক অ্যালগরিদম নিম্নলিখিত ধারণাগুলির উপর ভিত্তি করে তৈরি:
- সমস্যার বৈধ সমাধানগুলোকে জিন হিসেবে উপস্থাপন করা যায়
- ক্রসওভার আমাদের দুটি সমাধান একত্রিত করে একটি নতুন বৈধ সমাধান পেতে সাহায্য করে
- সিলেকশন ব্যবহার করে কিছু ফিটনেস ফাংশন এর মাধ্যমে আরও ভালো সমাধান নির্বাচন করা হয়
- মিউটেশন প্রবর্তন করে অপ্টিমাইজেশনকে অস্থিতিশীল করা হয় এবং লোকাল মিনিমাম থেকে বেরিয়ে আসা যায়
যদি আপনি একটি জেনেটিক অ্যালগরিদম বাস্তবায়ন করতে চান, তাহলে আপনার প্রয়োজন:
- জিন 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) দ্বারা প্রতিস্থাপন করুন
- ধাপ ২ থেকে পুনরাবৃত্তি করুন, যতক্ষণ না আমরা fit এর যথেষ্ট ছোট মান পাই, অথবা ধাপের সীমা পৌঁছায়।
জেনেটিক অ্যালগরিদম দ্বারা সাধারণত সমাধান করা কাজগুলো অন্তর্ভুক্ত:
- সময়সূচি অপ্টিমাইজেশন
- সর্বোত্তম প্যাকিং
- সর্বোত্তম কাটিং
- এক্সহস্টিভ সার্চকে দ্রুততর করা
নিম্নলিখিত নোটবুকে আপনার শেখা চালিয়ে যান:
এই নোটবুকে যান এবং জেনেটিক অ্যালগরিদম ব্যবহার করার দুটি উদাহরণ দেখুন:
- সম্পদের ন্যায্য বিভাজন
- ৮ কুইনস সমস্যা
জেনেটিক অ্যালগরিদম অনেক সমস্যার সমাধানে ব্যবহৃত হয়, যার মধ্যে লজিস্টিকস এবং সার্চ সমস্যাগুলো অন্তর্ভুক্ত। এই ক্ষেত্রটি মনোবিজ্ঞান এবং কম্পিউটার বিজ্ঞানের বিষয়গুলোর সংমিশ্রণ থেকে অনুপ্রাণিত।
"জেনেটিক অ্যালগরিদম বাস্তবায়ন করা সহজ, কিন্তু এর আচরণ বোঝা কঠিন।" উৎস একটি জেনেটিক অ্যালগরিদমের বাস্তবায়ন যেমন একটি সুডোকু ধাঁধা সমাধান করা, খুঁজে বের করুন এবং এটি কীভাবে কাজ করে তা একটি স্কেচ বা ফ্লোচার্ট আকারে ব্যাখ্যা করুন।
এই চমৎকার ভিডিওটি দেখুন যেখানে আলোচনা করা হয়েছে কিভাবে কম্পিউটার জেনেটিক অ্যালগরিদম দ্বারা প্রশিক্ষিত নিউরাল নেটওয়ার্ক ব্যবহার করে সুপার মারিও খেলতে শিখতে পারে। আমরা এই ধরনের গেম খেলার জন্য কম্পিউটার শেখার বিষয়ে আরও জানব পরবর্তী অংশে।
আপনার লক্ষ্য হলো তথাকথিত ডায়োফ্যান্টাইন সমীকরণ সমাধান করা - একটি সমীকরণ যার পূর্ণসংখ্যা মূল রয়েছে। উদাহরণস্বরূপ, a+2b+3c+4d=30 সমীকরণটি বিবেচনা করুন। আপনাকে এমন পূর্ণসংখ্যা মূল খুঁজে বের করতে হবে যা এই সমীকরণটি পূরণ করে।
এই অ্যাসাইনমেন্টটি এই পোস্ট দ্বারা অনুপ্রাণিত।
ইঙ্গিত:
- আপনি মূলগুলোকে [0;30] পরিসরে বিবেচনা করতে পারেন
- একটি জিন হিসেবে মূল মানগুলোর তালিকা ব্যবহার করার কথা ভাবুন
Diophantine.ipynb ব্যবহার করুন একটি প্রারম্ভিক বিন্দু হিসেবে।