Algoritma Pencarian Acak adalah metode pencarian berdasarkan pemilihan secara acak satu set solusi dari ruang pencarian dan memeriksa apakah mereka dapat menyelesaikan masalah. Pendekatan ini sering digunakan ketika tidak ada informasi atau strategi khusus untuk memandu pencarian.
Bagaimana itu bekerja
- Inisialisasi: Mulailah dengan serangkaian solusi awal yang dihasilkan secara acak.
- Evaluasi: Mengevaluasi kualitas setiap solusi berdasarkan fungsi tujuan atau kriteria evaluasi.
- Seleksi: Pilih subhimpunan solusi terbaik dari himpunan berdasarkan probabilitas atau pemilihan acak.
- Pengujian: Menguji apakah solusi yang dipilih mampu memecahkan masalah.
- Ulangi: Iterasi melalui langkah 2 hingga 4 hingga hasil yang memuaskan tercapai atau jumlah iterasi yang telah ditentukan tercapai.
Contoh: Mengoptimalkan Fibonacci Fungsi
Perhatikan masalah optimisasi fungsi Fibonacci F(x) = F(x-1) + F(x-2) dengan F(0) = 0, F(1) = 1. Kita ingin mencari nilai x yang F(x) dimaksimalkan. Metode Random Search dapat memilih nilai x secara acak, menghitung nilai Fibonacci pada setiap x, dan memilih nilai x yang sesuai dengan Fibonacci nilai tertinggi yang diperoleh.
Contoh Kode di 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;
}
Dalam contoh ini, kami menggunakan metode Pencarian Acak untuk mengoptimalkan fungsi Fibonacci. Kami memilih nilai x secara acak, menghitung Fibonacci nilai pada setiap x, dan kemudian memilih nilai x yang sesuai dengan Fibonacci nilai tertinggi yang telah kami hitung.