பரிணாம தேடல் அல்காரிதம் என்பது இயற்கையான பரிணாமத்தின் பொறிமுறையை அடிப்படையாகக் கொண்ட ஒரு தேர்வுமுறை முறையாகும். இந்த வழிமுறையானது, ஒரு பிரச்சனைக்கு சிறந்த தீர்வைக் கண்டறிய தலைமுறை தலைமுறையாக மக்கள்தொகைக்குள் தனிநபர்களின் பரிணாம செயல்முறையை உருவகப்படுத்துகிறது.
எப்படி இது செயல்படுகிறது
- மக்கள்தொகை துவக்கம்: தோராயமாக உருவாக்கப்பட்ட தனிநபர்களின் ஆரம்ப மக்கள்தொகையை உருவாக்கவும்.
- மதிப்பீடு: புறநிலை செயல்பாடு அல்லது மதிப்பீட்டு அளவுகோல்களின் அடிப்படையில் மக்கள்தொகையில் உள்ள ஒவ்வொரு நபரின் தரத்தையும் மதிப்பீடு செய்யவும்.
- தேர்வு: நிகழ்தகவுகள் அல்லது தேர்வு அளவுகோல்களின் அடிப்படையில் தற்போதைய மக்கள்தொகையில் இருந்து சிறந்த நபர்களின் துணைக்குழுவைத் தேர்ந்தெடுக்கவும்.
- பரிணாமம்: தேர்ந்தெடுக்கப்பட்ட நபர்களுக்கு குறுக்குவழி மற்றும் பிறழ்வு செயல்பாடுகளைப் பயன்படுத்துவதன் மூலம் புதிய தலைமுறையை உருவாக்கவும்.
- மறு செய்கை: திருப்திகரமான தீர்வை அடையும் வரை அல்லது முன் வரையறுக்கப்பட்ட எண்ணிக்கையிலான மறு செய்கைகளை அடையும் வரை பல தலைமுறைகளுக்கு 2 முதல் 4 படிகளை மீண்டும் செய்யவும்.
எடுத்துக்காட்டு: Fibonacci பரிணாம தேடலைப் பயன்படுத்தி செயல்பாட்டை மேம்படுத்துதல்
F(0) = 0, F(1) = 1 உடன் F(x) = F(x-1) + F(x-2) செயல்பாட்டின் தேர்வுமுறை சிக்கலைக் கவனியுங்கள். Fibonacci எதற்காக x இன் மதிப்பைக் கண்டறிய விரும்புகிறோம் F(x) அதிகரிக்கப்பட்டது. பரிணாம தேடல் முறையானது சீரற்ற x மதிப்புகளின் மக்கள்தொகையை உருவாக்கி, அவற்றை தலைமுறைகளாக உருவாக்கி, உகந்த x மதிப்பைக் கண்டறிய முடியும்.
C++ இல் குறியீட்டு எடுத்துக்காட்டு
#include <iostream>
#include <vector>
#include <cstdlib>
#include <ctime>
int fibonacci(int n) {
if(n <= 0) return 0;
if(n == 1) return 1;
return fibonacci(n- 1) + fibonacci(n- 2);
}
int evolutionSearchFibonacci(int populationSize, int numGenerations) {
srand(time(0));
std::vector<int> population(populationSize);
for(int i = 0; i < populationSize; ++i) {
population[i] = rand() % populationSize;
}
for(int gen = 0; gen < numGenerations; ++gen) {
int bestIndex = 0;
for(int i = 1; i < populationSize; ++i) {
if(fibonacci(population[i]) > fibonacci(population[bestIndex])) {
bestIndex = i;
}
}
// Crossover and mutation operations can be applied here
// Example: Replace the worst individual with the best individual
population[0] = population[bestIndex];
}
return population[0];
}
int main() {
int populationSize = 50;
int numGenerations = 100;
int result = evolutionSearchFibonacci(populationSize, numGenerations);
std::cout << "Optimal x for maximum Fibonacci value: " << result << std::endl;
return 0;
}
இந்த எடுத்துக்காட்டில், செயல்பாட்டை மேம்படுத்த பரிணாம தேடல் முறையைப் பயன்படுத்துகிறோம் Fibonacci. நாங்கள் சீரற்ற x மதிப்புகளின் மக்கள்தொகையை உருவாக்குகிறோம், சிறந்த நபர்களைத் தேர்ந்தெடுத்து குறுக்குவழி மற்றும் பிறழ்வு செயல்பாடுகளைப் பயன்படுத்துவதன் மூலம் அவற்றை தலைமுறைகளாக உருவாக்குகிறோம்.