Algoritmu tat-Tiftix Random (Random Search) f'C++- Spjegazzjoni, Eżempju u Kodiċi

L-algoritmu tat-Tiftix Random huwa metodu ta 'tfittxija bbażat fuq l-għażla każwali ta' sett ta 'soluzzjonijiet mill-ispazju tat-tfittxija u l-iċċekkjar jekk jistgħux isolvu l-problema. Dan l-approċċ huwa spiss użat meta ma jkunx hemm informazzjoni speċifika jew strateġija biex tiggwida t-tfittxija.

Kif taħdem

  1. Inizjalizzazzjoni: Ibda b'sett ta 'soluzzjonijiet inizjali ġġenerati b'mod każwali.
  2. Evalwazzjoni: Evalwa l-kwalità ta 'kull soluzzjoni bbażata fuq il-funzjoni oġġettiva jew kriterji ta' evalwazzjoni.
  3. Għażla: Agħżel subsett tal-aħjar soluzzjonijiet mis-sett ibbażat fuq probabbiltajiet jew għażla każwali.
  4. Ittestjar: Ittestja jekk is-soluzzjonijiet magħżula humiex kapaċi jsolvu l-problema.
  5. Irrepeti: Irrepeti permezz tal-passi 2 sa 4 sakemm jinkiseb riżultat sodisfaċenti jew jintlaħaq numru predefinit ta' iterazzjonijiet.

Eżempju: Ottimizzazzjoni tal- Fibonacci Funzjoni

Ikkunsidra l-problema ta’ ottimizzazzjoni tal- Fibonacci funzjoni F(x) = F(x-1) + F(x-2) b’F(0) = 0, F(1) = 1. Irridu nsibu l-valur ta’ x li għalih F(x) huwa massimizzat. Il-metodu Random Search jista 'jagħżel b'mod każwali valuri ta' x, jikkalkula l- Fibonacci valur f'kull x, u jagħżel il-valur ta 'x li jikkorrispondi għall-ogħla Fibonacci valur miksub.

Eżempju ta' Kodiċi f'C++

#include <iostream>  
#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 randomSearchFibonacci(int maxIterations) {  
    int bestX = 0;  
    int bestValue = 0;  
  
    srand(time(0));  
  
    for(int i = 0; i < maxIterations; ++i) {  
        int x = rand() % maxIterations;  
        int value = fibonacci(x);  
        if(value > bestValue) {  
            bestValue = value;  
            bestX = x;  
        }  
    }  
  
    return bestX;  
}  
  
int main() {  
    int maxIterations = 20;  
    int result = randomSearchFibonacci(maxIterations);  
  
    std::cout << "Optimal x for maximum Fibonacci value: " << result << std::endl;  
  
    return 0;  
}  

F'dan l-eżempju, nużaw il-metodu Random Search biex ottimizzaw il- Fibonacci funzjoni. Aħna nagħżlu b'mod każwali valuri ta 'x, nikkalkulaw il- Fibonacci valur f'kull x, u mbagħad nagħżlu l-valur ta' x li jikkorrispondi għall-ogħla Fibonacci valur li kkalkulajna.