Algoritma Cloud Search (Cloud Search) di C++- Penjelasan, Contoh, dan Kode

Algoritme Cloud Search adalah metode pencarian yang melibatkan pembuatan sekumpulan besar solusi acak, yang sering disebut sebagai "cloud", lalu mencari solusi terbaik dalam kumpulan ini. Pendekatan ini biasanya digunakan untuk menemukan solusi perkiraan untuk masalah yang kompleks ketika tidak ada panduan khusus yang tersedia.

Bagaimana itu bekerja

  1. Inisialisasi Cloud: Buat sekumpulan besar solusi acak(cloud).
  2. Evaluasi: Mengevaluasi kualitas setiap solusi di cloud berdasarkan fungsi tujuan atau kriteria evaluasi.
  3. Seleksi: Pilih subset solusi terbaik dari cloud berdasarkan probabilitas atau kriteria seleksi.
  4. Peningkatan: Tingkatkan kualitas solusi di cloud dengan menerapkan transformasi atau pengoptimalan.
  5. Iterasi: Ulangi langkah 2 hingga 4 hingga hasil yang memuaskan tercapai atau jumlah iterasi yang telah ditentukan tercapai.

Contoh: Cloud Search untuk Traveling Salesman Problem

Pertimbangkan Traveling Salesman Problem(TSP), di mana tujuannya adalah menemukan siklus Hamiltonian terpendek yang mengunjungi semua kota. Metode Cloud Search dapat menghasilkan siklus Hamiltonian acak dalam jumlah besar, lalu memilih siklus dengan biaya terendah.

Contoh Kode di C++

#include <iostream>  
#include <vector>  
#include <algorithm>  
#include <ctime>  
#include <cstdlib>  
  
struct City {  
    int x;  
    int y;  
};  
  
double calculateDistance(const City& city1, const City& city2) {  
    return std::sqrt((city1.x- city2.x)*(city1.x- city2.x) +(city1.y- city2.y)*(city1.y- city2.y));  
}  
  
double cloudSearchTSP(std::vector<City>& cities, int maxIterations) {  
    int numCities = cities.size();  
    double bestDistance = std::numeric_limits<double>::max();  
  
    srand(time(0));  
  
    for(int i = 0; i < maxIterations; ++i) {  
        std::random_shuffle(cities.begin(), cities.end());  
  
        double totalDistance = 0.0;  
        for(int j = 0; j < numCities- 1; ++j) {  
            totalDistance += calculateDistance(cities[j], cities[j + 1]);  
        }  
        totalDistance += calculateDistance(cities[numCities- 1], cities[0]);  
  
        bestDistance = std::min(bestDistance, totalDistance);  
    }  
  
    return bestDistance;  
}  
  
int main() {  
    std::vector<City> cities = {{0, 0}, {1, 2}, {3, 1}, {4, 3}, {2, 4}};  
    int maxIterations = 1000;  
    double shortestDistance = cloudSearchTSP(cities, maxIterations);  
  
    std::cout << "Shortest distance in TSP: " << shortestDistance << std::endl;  
  
    return 0;  
}  

Dalam contoh ini, kami menggunakan metode Cloud Search untuk menyelesaikan TSP. Kami menghasilkan sejumlah besar siklus Hamiltonian acak dengan mengocok kota secara acak, lalu menghitung biaya untuk setiap siklus dan memilih siklus dengan biaya terendah.