تعد خوارزمية Cloud Search إحدى طرق البحث التي تتضمن إنشاء مجموعة كبيرة من الحلول العشوائية ، والتي يشار إليها غالبًا باسم "السحابة" ، ثم البحث عن أفضل الحلول ضمن هذه المجموعة. يستخدم هذا النهج بشكل شائع لإيجاد حلول تقريبية للمشاكل المعقدة عند عدم توفر إرشادات محددة.
كيف تعمل
- تهيئة السحابة: قم بإنشاء مجموعة كبيرة من الحلول العشوائية(السحابة).
- التقييم: قم بتقييم جودة كل حل في السحابة بناءً على الوظيفة الموضوعية أو معايير التقييم.
- التحديد: حدد مجموعة فرعية من أفضل الحلول من السحابة بناءً على الاحتمالات أو معايير الاختيار.
- التحسين: قم بتحسين جودة الحلول في السحابة من خلال تطبيق عمليات التحويل أو التحسينات.
- التكرار: كرر الخطوات من 2 إلى 4 حتى يتم تحقيق نتيجة مرضية أو الوصول إلى عدد محدد مسبقًا من التكرارات.
مثال: Cloud Search لمشكلة بائع متجول
ضع في اعتبارك مشكلة البائع المتجول(TSP) ، حيث يتمثل الهدف في العثور على أقصر دورة هاميلتونية تزور جميع المدن. يمكن لطريقة Cloud Search إنشاء عدد كبير من دورات هاميلتونية العشوائية ، ثم تحديد الدورة بأقل تكلفة.
مثال رمز في 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;
}
في هذا المثال ، نستخدم طريقة Cloud Search لحل TSP. نقوم بتوليد عدد كبير من دورات هاميلتونية العشوائية عن طريق خلط المدن عشوائيًا ، ثم حساب التكلفة لكل دورة واختيار الدورة بأقل تكلفة.