Algoritma Panelusuran Evolusi (Evolutionary Search) ing C++- Panjelasan, Tuladha, lan Kode

Algoritma Panelusuran Evolusi minangka cara optimasi adhedhasar mekanisme evolusi alam. Algoritma iki simulasi proses evolusi individu ing populasi antarane generasi kanggo nemokake solusi sing paling apik kanggo masalah.

Cara Kerjane

  1. Inisialisasi Populasi: Nggawe populasi wiwitan saka individu sing digawe kanthi acak.
  2. Evaluasi: Evaluasi kualitas saben individu ing populasi adhedhasar fungsi objektif utawa kriteria evaluasi.
  3. Pilihan: Pilih subset saka individu paling apik saka populasi saiki adhedhasar kemungkinan utawa kritéria pilihan.
  4. Evolusi: Nggawe generasi anyar kanthi ngetrapake operasi silang lan mutasi kanggo individu sing dipilih.
  5. Pengulangan: Baleni langkah 2 nganti 4 liwat pirang-pirang generasi nganti entuk solusi sing marem utawa tekan jumlah iterasi sing wis ditemtokake.

Conto: Ngoptimalake Fibonacci Fungsi nggunakake Panelusuran Evolusi

Coba masalah optimasi fungsi Fibonacci F(x) = F(x-1) + F(x-2) karo F(0) = 0, F(1) = 1. Kita arep golek nilai x kang F(x) maksimal. Cara Panelusuran Evolusi bisa ngasilake populasi kanthi nilai x acak, ngrembakakake kabeh generasi kanggo nemokake nilai x sing optimal.

Tuladha Kode ing 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;  
}  

Ing conto iki, kita nggunakake metode Evolutionary Search kanggo ngoptimalake Fibonacci fungsi kasebut. Kita ngasilake populasi kanthi nilai x acak, mekar ing antarane generasi kanthi milih individu sing paling apik lan ngetrapake operasi silang lan mutasi.