کلاؤڈ سرچ الگورتھم ایک تلاش کا طریقہ ہے جس میں بے ترتیب حلوں کا ایک بڑا مجموعہ تیار کرنا شامل ہے، جسے اکثر "کلاؤڈ" کہا جاتا ہے اور پھر اس سیٹ کے اندر بہترین حل تلاش کرنا شامل ہے۔ اس نقطہ نظر کو عام طور پر پیچیدہ مسائل کے تخمینی حل تلاش کرنے کے لیے استعمال کیا جاتا ہے جب کوئی خاص رہنمائی دستیاب نہ ہو۔
یہ کیسے کام کرتا ہے
- کلاؤڈ انیشیلائزیشن: بے ترتیب حل(کلاؤڈ) کا ایک بڑا سیٹ بنائیں۔
- تشخیص: کلاؤڈ میں ہر حل کے معیار کا معروضی فنکشن یا تشخیص کے معیار کی بنیاد پر جائزہ لیں۔
- انتخاب: امکانات یا انتخاب کے معیار کی بنیاد پر کلاؤڈ سے بہترین حل کا ذیلی سیٹ منتخب کریں۔
- بہتری: تبدیلیوں یا اصلاح کو لاگو کرکے کلاؤڈ میں حل کے معیار کو بہتر بنائیں۔
- تکرار: اقدامات 2 سے 4 تک دہرائیں جب تک کہ کوئی تسلی بخش نتیجہ حاصل نہ ہو جائے یا تکرار کی پہلے سے طے شدہ تعداد تک پہنچ جائے۔
مثال: ٹریولنگ سیلز مین کے مسئلے کے لیے کلاؤڈ سرچ
ٹریولنگ سیلز مین پرابلم(TSP) پر غور کریں، جہاں کا مقصد مختصر ترین ہیملٹونین سائیکل تلاش کرنا ہے جو تمام شہروں کا دورہ کرتا ہے۔ کلاؤڈ تلاش کا طریقہ بے ترتیب ہیملٹونین سائیکلوں کی ایک بڑی تعداد پیدا کر سکتا ہے، پھر سب سے کم قیمت کے ساتھ سائیکل کا انتخاب کریں۔
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;
}
اس مثال میں، ہم TSP کو حل کرنے کے لیے Cloud Search کا طریقہ استعمال کرتے ہیں۔ ہم شہروں کو تصادفی طور پر شفل کرکے بڑی تعداد میں بے ترتیب ہیملٹونین سائیکل تیار کرتے ہیں، پھر ہر سائیکل کے لیے لاگت کا حساب لگائیں اور سب سے کم لاگت کے ساتھ سائیکل کا انتخاب کریں۔