Loader

📚 مستندات جامع الگوریتم‌های فراابتکاری

راهنمای کامل، مفاهیم، و کاربردها

🧬 Genetic Algorithm (الگوریتم ژنتیک)

مفهوم:

الگوریتم ژنتیک الهام گرفته از فرایند تکامل طبیعی و انتخاب طبیعی داروین است. این الگوریتم از عملیات‌های ژنتیکی مانند جهش، تقاطع و انتخاب برای بهبود جمعیت جواب‌ها استفاده می‌کند.

معادلات و عملیات اصلی:

1. انتخاب (Selection):
احتمال انتخاب (Fitness Proportionate):
P(i) = fitness(i) / Σ fitness(j)

Tournament Selection: انتخاب بهترین از k فرد تصادفی

2. تقاطع (Crossover):
Single-Point: child = parent1[0:point] + parent2[point:end]
Two-Point: بریدن در دو نقطه و تعویض بخش میانی
Uniform: هر ژن با احتمال 0.5 از یکی از والدین

3. جهش (Mutation):
با احتمال p_m یک ژن را تصادفی تغییر بده
Bit Flip (باینری): 0 → 1 یا 1 → 0
Gaussian (پیوسته): x = x + N(0, σ)

p_c: نرخ تقاطع (معمولاً 0.6-0.9)
p_m: نرخ جهش (معمولاً 0.01-0.1)

نحوه کار:

  1. ایجاد یک جمعیت اولیه تصادفی از جواب‌ها
  2. ارزیابی هر فرد در جمعیت با تابع برازندگی
  3. انتخاب والدین بر اساس برازندگی (Tournament Selection)
  4. تولید فرزندان از طریق تقاطع (Crossover)
  5. اعمال جهش (Mutation) به فرزندان
  6. جایگزینی جمعیت قدیم با جمعیت جدید
  7. تکرار تا رسیدن به شرط توقف

✅ مزایا:

  • قابلیت جستجوی فضای وسیع
  • عدم نیاز به اطلاعات گرادیان
  • قابلیت موازی‌سازی
  • مقاومت در برابر بهینه‌های محلی

❌ معایب:

  • نیاز به تنظیم پارامترها
  • سرعت همگرایی کند
  • هزینه محاسباتی بالا
  • نتایج غیرقطعی

کاربردها:

  • مسائل بهینه‌سازی ترکیبیاتی (TSP, Scheduling)
  • طراحی شبکه‌های عصبی
  • بهینه‌سازی مالی و پرتفولیو
  • طراحی مهندسی

🐦 Particle Swarm Optimization (بهینه‌سازی ازدحام ذرات)

مفهوم:

PSO الهام گرفته از رفتار اجتماعی پرندگان و ماهی‌ها است. هر ذره در فضای جستجو حرکت می‌کند و سرعت خود را بر اساس بهترین موقعیت شخصی و بهترین موقعیت کل گروه تنظیم می‌کند.

معادلات اصلی:

v[i] = w * v[i] + c1 * r1 * (pBest[i] - x[i]) + c2 * r2 * (gBest - x[i])
x[i] = x[i] + v[i]

w: وزن اینرسی
c1, c2: ضرایب شناختی و اجتماعی
r1, r2: اعداد تصادفی [0,1]

✅ مزایا:

  • سادگی پیاده‌سازی
  • همگرایی سریع
  • پارامترهای کمتر نسبت به GA
  • حافظه (ذخیره بهترین موقعیت‌ها)

❌ معایب:

  • امکان گیر کردن در بهینه محلی
  • حساسیت به پارامترها
  • عملکرد ضعیف در مسائل چندهدفه

کاربردها:

  • آموزش شبکه‌های عصبی
  • کنترل فازی
  • پردازش تصویر
  • مسائل بهینه‌سازی پیوسته

🐜 Ant Colony Optimization (بهینه‌سازی کلونی مورچه)

مفهوم:

ACO الهام گرفته از نحوه پیدا کردن کوتاه‌ترین مسیر توسط مورچه‌ها با استفاده از فرومون است. مورچه‌ها فرومون روی مسیرهای خوب می‌گذارند که دیگر مورچه‌ها را به سمت آن مسیر جذب می‌کند.

معادلات اصلی:

احتمال انتخاب مسیر:
P[i][j] = (τ[i][j]^α × η[i][j]^β) / Σ(τ[i][k]^α × η[i][k]^β)

به‌روزرسانی فرومون:
τ[i][j] = (1 - ρ) × τ[i][j] + Σ Δτ[i][j]
Δτ[i][j] = Q / L (اگر مورچه از مسیر ij استفاده کرده باشد)

τ: میزان فرومون
η: دید محلی (1/فاصله)
α, β: ضرایب وزن فرومون و دید
ρ: نرخ تبخیر فرومون
Q: ثابت
L: طول مسیر کلی

✅ مزایا:

  • عملکرد عالی در مسائل گراف
  • قابلیت کشف مسیرهای بهینه
  • انعطاف‌پذیری بالا
  • استفاده از تجربه جمعی

❌ معایب:

  • زمان همگرایی متغیر
  • نیاز به تنظیم پارامترهای زیاد
  • مصرف حافظه بالا
  • احتمال رکود (stagnation)

کاربردها:

  • مسئله فروشنده دوره‌گرد (TSP)
  • مسیریابی در شبکه
  • زمان‌بندی پروژه
  • طراحی مدار مجتمع

🐝 Artificial Bee Colony (کلونی زنبور مصنوعی)

مفهوم:

ABC الهام گرفته از رفتار جستجوی غذای زنبورهای عسل است. زنبورها به سه دسته تقسیم می‌شوند: زنبورهای کارگر، زنبورهای ناظر، و زنبورهای کاوشگر.

معادلات اصلی:

جستجوی Employed Bee:
v[i][j] = x[i][j] + φ[i][j] × (x[i][j] - x[k][j])

احتمال انتخاب توسط Onlooker:
P[i] = fit[i] / Σ fit[j]

Scout Bee (اگر منبع غذا بیش از limit بار بهبود نیافت):
x[i][j] = min[j] + rand(0,1) × (max[j] - min[j])

φ: عدد تصادفی [-1, 1]
k: یک زنبور تصادفی (k ≠ i)
fit: برازندگی منبع غذا
limit: حد تحمل

مراحل:

  1. Employed Bees: جستجوی محلی در اطراف منابع غذا
  2. Onlooker Bees: انتخاب منابع غذا بر اساس احتمال
  3. Scout Bees: کشف منابع غذای جدید (رها کردن منابع بد)

✅ مزایا:

  • تعادل خوب بین exploration و exploitation
  • پارامترهای کمتر از GA
  • عملکرد خوب در مسائل چندبعدی
  • ساده و کارآمد

❌ معایب:

  • همگرایی کند در برخی مسائل
  • حساسیت به پارامتر limit
  • عملکرد ضعیف در مسائل گسسته

کاربردها:

  • بهینه‌سازی توابع پیوسته
  • آموزش شبکه عصبی
  • مسائل مهندسی
  • پردازش سیگنال

🌡️ Simulated Annealing (شبیه‌سازی آنیلینگ)

مفهوم:

SA الهام گرفته از فرایند آنیلینگ در متالورژی است. در این فرایند، فلز گرم می‌شود و سپس به آرامی سرد می‌شود تا به حالت کریستالی کم‌انرژی برسد.

معادله پذیرش:

P(accept) = exp(-ΔE / T)
ΔE = E(new) - E(current)
T = T * cooling_rate

✅ مزایا:

  • قدرت فرار از بهینه‌های محلی
  • سادگی پیاده‌سازی
  • اثبات همگرایی

❌ معایب:

  • کندی همگرایی
  • حساسیت به جدول سرمایش
  • تنها یک جواب در هر زمان

✨ Firefly Algorithm (الگوریتم کرم شب‌تاب)

مفهوم:

الگوریتم Firefly بر اساس رفتار نورافشانی کرم‌های شب‌تاب است. کرم‌های کم‌نورتر به سمت کرم‌های پرنورتر جذب می‌شوند.

معادلات اصلی:

شدت نور:
I(r) = I₀ × e^(-γr²)

جذابیت:
β(r) = β₀ × e^(-γr²)

حرکت کرم شب‌تاب i به سمت j:
x[i] = x[i] + β₀ × e^(-γr²[i,j]) × (x[j] - x[i]) + α × (rand - 0.5)

I₀: شدت نور اولیه
β₀: جذابیت اولیه
γ: ضریب جذب نور
r[i,j]: فاصله بین کرم i و j
α: پارامتر تصادفی‌سازی
rand: عدد تصادفی [0,1]

ویژگی‌های کلیدی:

  • جذابیت متناسب با نور است
  • نور با فاصله کاهش می‌یابد
  • اگر کرم پرنورتری نباشد، حرکت تصادفی
  • تقسیم‌بندی خودکار جمعیت به زیرگروه‌ها

✅ مزایا:

  • توانایی یافتن بهینه‌های محلی و کلی
  • عملکرد خوب در مسائل چندهدفه
  • خودتنظیم پارامترها
  • موازی‌سازی آسان

❌ معایب:

  • پیچیدگی محاسباتی O(n²)
  • حساسیت به پارامترهای α, β, γ
  • نیاز به محاسبات فاصله زیاد

کاربردها:

  • بهینه‌سازی چندهدفه
  • طراحی آنتن
  • برنامه‌ریزی تولید
  • بهینه‌سازی شبکه‌های عصبی

🚫 Tabu Search (جستجوی تابو)

مفهوم:

Tabu Search یک الگوریتم جستجوی محلی است که از یک لیست حافظه (Tabu List) برای جلوگیری از چرخیدن در جواب‌های قبلی و فرار از بهینه‌های محلی استفاده می‌کند.

مکانیزم کار:

در هر تکرار:
1. جواب‌های همسایه فعلی را بررسی کن
2. بهترین همسایه را انتخاب کن (حتی اگر بدتر باشد)
3. اگر این حرکت در Tabu List نیست، قبول کن
4. حرکت را به Tabu List اضافه کن
5. اگر Tabu List پر شد، قدیمی‌ترین را حذف کن

Aspiration Criterion: اگر جواب تابو بهتر از بهترین جواب تاکنون باشد، قبول کن

اجزای کلیدی:

  • Tabu List: لیست حرکات ممنوع (معمولاً 5-20 عنصر)
  • Neighborhood: مجموعه جواب‌های همسایه
  • Aspiration Criteria: شرایط لغو ممنوعیت
  • Tenure: مدت زمان ماندن در Tabu List

✅ مزایا:

  • جلوگیری موثر از گیر کردن در بهینه محلی
  • عملکرد عالی در مسائل ترکیبیاتی
  • سرعت همگرایی بالا
  • قابل ترکیب با سایر روش‌ها

❌ معایب:

  • نیاز به مدیریت حافظه
  • حساسیت به اندازه Tabu List
  • تعریف همسایگی مشکل در مسائل پیچیده

کاربردها:

  • زمان‌بندی تولید
  • مسیریابی وسایل نقلیه
  • طراحی شبکه
  • مسائل پیکربندی

⛰️ Hill Climbing (صعود تپه)

مفهوم:

Hill Climbing ساده‌ترین الگوریتم بهینه‌سازی است که همیشه به سمت جواب بهتر حرکت می‌کند. مانند کوهنوردی که همیشه به سمت بالا می‌رود.

شبه کد:

1. شروع با یک جواب تصادفی (current)
2. تکرار تا همگرایی:
- جواب‌های همسایه را بررسی کن
- اگر همسایه بهتری یافت شد:
current = بهترین همسایه
- وگرنه: توقف (به بهینه محلی رسیدیم)

انواع Hill Climbing:
• Simple HC: اولین همسایه بهتر را بپذیر
• Steepest Ascent: بهترین همسایه را انتخاب کن
• Stochastic HC: یک همسایه بهتر تصادفی را انتخاب کن
• Random Restart: بعد از گیر کردن، از جای تصادفی شروع کن

✅ مزایا:

  • بسیار ساده و سریع
  • حافظه بسیار کم (فقط یک جواب)
  • مناسب برای فضاهای جستجوی نرم
  • بدون نیاز به تنظیم پارامتر

❌ معایب:

  • گیر می‌کند در بهینه محلی
  • نتایج بسته به نقطه شروع
  • ناکامل بودن (مانند plateau، ridge)
  • عدم تضمین یافتن بهینه کلی

کاربردها:

  • پیش‌پردازش برای الگوریتم‌های پیچیده‌تر
  • مسائل با فضای جستجوی نرم
  • بهینه‌سازی سریع
  • جستجوی محلی

🐦 Cuckoo Search (جستجوی کوکو)

مفهوم:

Cuckoo Search الهام گرفته از رفتار تولیدمثلی پرندگان کوکو است که تخم‌هایشان را در لانه‌های پرندگان دیگر می‌گذارند (Brood Parasitism).

معادلات اصلی (Lévy Flights):

جستجوی کوکو با Lévy Flights:
x[i]^(t+1) = x[i]^t + α ⊕ Levy(λ)

Levy(λ) ~ u = t^(-λ), (1 < λ ≤ 3)

کشف لانه (با احتمال p_a):
اگر تخم کشف شد، لانه را به صورت تصادفی جایگزین کن

α: اندازه گام
⊕: ضرب نقطه‌ای
λ: پارامتر توزیع Lévy
p_a: احتمال کشف تخم (معمولاً 0.25)

قوانین Cuckoo:

  1. هر کوکو یک تخم در یک لانه تصادفی می‌گذارد
  2. بهترین لانه‌ها به نسل بعد منتقل می‌شوند
  3. تعداد لانه‌های میزبان ثابت است و یک تخم ممکن است با احتمال p_a کشف شود

✅ مزایا:

  • پارامترهای بسیار کم (فقط 2-3 پارامتر)
  • Lévy Flights برای جستجوی کارآمد
  • تعادل خوب بین exploration و exploitation
  • عملکرد عالی در مسائل بهینه‌سازی کلی

❌ معایب:

  • ناپایدار در برخی مسائل بهینه‌سازی عددی
  • حساسیت به پارامتر α
  • عملکرد ضعیف در مسائل گسسته

کاربردها:

  • مسائل مهندسی (طراحی سازه)
  • بهینه‌سازی توابع پیوسته
  • مسئله فروشنده دوره‌گرد (TSP)
  • شناسایی الگو

⚠️ توجه مهم:

الگوریتم Cuckoo Search در بهینه‌سازی عددی ناپایدار است و در صفحه اصلی برای این نوع مسئله غیرفعال شده است. برای مسئله TSP بدون مشکل عمل می‌کند.

🦇 Bat Algorithm (الگوریتم خفاش)

مفهوم:

Bat Algorithm بر اساس رفتار echolocation (بازتاب‌یابی) خفاش‌ها است. خفاش‌ها امواج اولتراسونیک منتشر می‌کنند و از بازتاب آن برای یافتن طعمه استفاده می‌کنند.

معادلات اصلی:

تنظیم فرکانس:
f[i] = f_min + (f_max - f_min) × β

به‌روزرسانی سرعت و موقعیت:
v[i]^t = v[i]^(t-1) + (x[i]^t - x*) × f[i]
x[i]^t = x[i]^(t-1) + v[i]^t

جستجوی محلی (اگر rand > r[i]):
x_new = x_old + ε × A^t

به‌روزرسانی Loudness و Pulse Rate:
A[i]^(t+1) = α × A[i]^t
r[i]^(t+1) = r[i]^0 × [1 - exp(-γt)]

f: فرکانس، β: عدد تصادفی [0,1]
x*: بهترین جواب فعلی
A: بلندی صدا (loudness)
r: نرخ پالس (pulse rate)
α, γ: ثابت‌ها (معمولاً 0.9)

ویژگی‌های کلیدی:

  • Frequency Tuning: تنظیم فرکانس برای کنترل سرعت
  • Loudness: کاهش تدریجی برای جستجوی دقیق‌تر
  • Pulse Rate: افزایش برای بهره‌برداری بیشتر

✅ مزایا:

  • سرعت همگرایی بالا
  • تنظیم خودکار پارامترها (A و r)
  • ترکیب موثر exploration و exploitation
  • عملکرد خوب در مسائل چندبعدی

❌ معایب:

  • تعداد پارامترهای نسبتاً زیاد
  • حساسیت به f_min و f_max
  • ممکن است در برخی مسائل به بهینه محلی گیر کند

کاربردها:

  • بهینه‌سازی توابع پیوسته
  • طراحی مهندسی
  • برنامه‌ریزی منابع
  • شبکه‌های عصبی

📊 جدول مقایسه الگوریتم‌ها

الگوریتم پیچیدگی زمانی حافظه موازی‌سازی مناسب برای
GA O(g × n × f) متوسط عالی مسائل ترکیبیاتی
PSO O(i × n × d) کم خوب مسائل پیوسته
ACO O(i × n² ) زیاد متوسط مسائل گراف
ABC O(i × n × d) کم خوب بهینه‌سازی عددی
SA O(i × f) خیلی کم ضعیف مسائل NP-hard
Tabu Search O(i × n_h × f) متوسط متوسط مسائل ترکیبیاتی
Hill Climbing O(i × n_h × f) خیلی کم ضعیف جستجوی محلی سریع
Firefly O(i × n²) متوسط خوب بهینه‌سازی چندهدفه
Cuckoo Search O(i × n × f) کم خوب TSP، مسائل پیوسته
Bat Algorithm O(i × n × f) کم خوب مسائل چندبعدی

توضیحات:
g: تعداد نسل‌ها، n: اندازه جمعیت، i: تعداد تکرار، d: ابعاد مسئله، f: زمان ارزیابی تابع هدف، n_h: تعداد همسایه‌ها

💡 نکات کلیدی برای انتخاب الگوریتم

1. بر اساس نوع مسئله:

  • مسائل گسسته/ترکیبیاتی: GA, ACO, Tabu Search
  • مسائل پیوسته: PSO, ABC, Firefly
  • مسائل چندهدفه: NSGA-II, MOPSO, Firefly

2. بر اساس محدودیت‌ها:

  • زمان اجرا محدود: Hill Climbing, Tabu Search
  • حافظه محدود: SA, Hill Climbing
  • نیاز به دقت بالا: Hybrid Methods

3. تنظیم پارامترها:

  • از Cross-validation استفاده کنید
  • پارامترهای کلیدی را با Grid Search تنظیم کنید
  • از الگوریتم‌های Adaptive استفاده کنید

🎯 راهنمای کامل کار با صفحه اصلی (Index)

۱. انتخاب الگوریتم:

در بالای صفحه، ۱۰ الگوریتم مختلف قرار دارند. برای انتخاب الگوریتم:

  • روی دکمه الگوریتم مورد نظر کلیک کنید
  • دکمه انتخاب شده با رنگ صورتی-قرمز مشخص می‌شود
  • فقط یک الگوریتم در هر زمان قابل انتخاب است
  • برای تغییر الگوریتم، روی دکمه دیگری کلیک کنید

۲. انتخاب نوع مسئله:

دو نوع مسئله:
📍 TSP (Traveling Salesman Problem): مسئله فروشنده دوره‌گرد
📍 بهینه‌سازی عددی (Numerical Optimization): بهینه‌سازی توابع ریاضی

TSP - مسئله فروشنده دوره‌گرد:

  • هدف: پیدا کردن کوتاه‌ترین مسیر بین مجموعه‌ای از شهرها
  • تعداد راس‌ها: تعداد شهرها را تنظیم کنید (۵ تا ۵۰)
  • تولید تصادفی: دکمه "🎲 تولید تصادفی راس‌ها" برای ساخت شهرهای جدید
  • نمایش: شهرها به صورت نقاط روی نمودار نمایش داده می‌شوند

بهینه‌سازی عددی:

  • هدف: پیدا کردن کمینه تابع هدف (مثلاً x² + y²)
  • تعداد جمعیت/عامل: تعداد ذرات یا افراد در الگوریتم (۱۰ تا ۱۰۰۰)
  • نمایش: عامل‌ها به صورت نقاط متحرک در فضای ۲ بعدی
  • توجه: الگوریتم Cuckoo Search در این حالت غیرفعال است

۳. تنظیم پارامترها:

  • سرعت شبیه‌سازی: سرعت نمایش انیمیشن (۵۰ تا ۱۰۰۰ میلی‌ثانیه)
  • تعداد تکرار: تعداد نسل‌ها یا تکرارهای الگوریتم (۱۰ تا ۵۰۰)
    • برای اجرای تکی: حداکثر ۵۰۰
    • برای مقایسه: حداکثر ۵۰ (به دلیل اجرای ۱۰ الگوریتم)

۴. دکمه‌های اجرا:

▶️ اجرای الگوریتم انتخاب‌شده:

  • یک الگوریتم را انتخاب کنید
  • پارامترها را تنظیم کنید
  • روی این دکمه کلیک کنید
  • نتیجه: انیمیشن لحظه‌ای اجرای الگوریتم را مشاهده می‌کنید
  • در پایین صفحه، نمودار همگرایی و آمار نمایش داده می‌شود

🚀 اجرا و مقایسه همه الگوریتم‌ها:

  • نیازی به انتخاب الگوریتم خاص نیست
  • همه الگوریتم‌ها (۱۰ یا ۹ الگوریتم) به صورت خودکار اجرا می‌شوند
  • زمان اجرا: ۲۰-۶۰ ثانیه (بسته به پارامترها)
  • نتیجه: جدول مقایسه با نمودار میله‌ای نمایش داده می‌شود
  • بهترین الگوریتم با ستاره 🏆 مشخص می‌شود

⏹️ توقف:

  • برای متوقف کردن انیمیشن در حال اجرا
  • داده‌ها حفظ می‌شوند

📊 نمایش داده‌ها در جدول:

  • برای TSP: نمایش مختصات تمام راس‌ها
  • برای مقایسه: نمایش نتایج مرتب شده تمام الگوریتم‌ها
  • برای اجرای تکی: نمایش fitness هر تکرار
  • جدول شامل ردیف‌بندی، زمان اجرا، و بهترین مقدار

۵. بخش شبیه‌سازی زنده:

  • Canvas: نمایش بصری الگوریتم در حال اجرا
  • نقاط آبی: عامل‌ها یا افراد جمعیت
  • نقطه قرمز: بهترین جواب فعلی
  • خطوط: مسیر (در TSP) یا trajectory ذرات (در PSO)
  • رنگ‌بندی: هر الگوریتم رنگ خاص خود را دارد

۶. آمار و اطلاعات:

📌 تکرار فعلی: نمایش شماره تکرار جاری
📌 بهترین Fitness: بهترین مقدار پیدا شده تا کنون
📌 زمان اجرا: مدت زمان اجرا به میلی‌ثانیه
📌 نمودار همگرایی: نمودار تغییرات fitness در طول تکرارها

۷. نتایج مقایسه:

بعد از اجرای "مقایسه همه الگوریتم‌ها":

  • جدول مقایسه: نمایش نتایج به صورت جدول
    • ستون الگوریتم: نام الگوریتم
    • ستون بهترین مقدار: کوچک‌ترین fitness پیدا شده
    • ستون زمان: زمان اجرا به میلی‌ثانیه
    • ستون تکرار: تعداد تکرارها
    • ردیف سبز: بهترین الگوریتم 🏆
  • نمودار میله‌ای: مقایسه بصری زمان اجرا و fitness
  • مرتب‌سازی: نتایج از بهترین به بدترین مرتب شده‌اند

⚙️ نکات تخصصی و بهینه‌سازی

۱. انتخاب تعداد تکرار مناسب:

  • تست اولیه: ۲۰-۳۰ تکرار برای درک رفتار الگوریتم
  • مسائل ساده: ۵۰-۱۰۰ تکرار کافی است
  • مسائل پیچیده: ۲۰۰-۵۰۰ تکرار توصیه می‌شود
  • مقایسه الگوریتم‌ها: ۲۰-۳۰ تکرار (برای سرعت)

۲. انتخاب اندازه جمعیت:

  • TSP: تعداد شهرها × ۳ تا ۵
  • بهینه‌سازی عددی:
    • مسائل ساده: ۳۰-۵۰
    • مسائل متوسط: ۵۰-۱۰۰
    • مسائل پیچیده: ۱۰۰-۲۰۰
  • قاعده کلی: جمعیت بزرگتر = کاوش بهتر اما کندتر

۳. تفسیر نتایج:

  • همگرایی سریع: الگوریتم زود به جواب رسیده (ممکن است بهینه محلی باشد)
  • همگرایی کند: کاوش بیشتر فضای جستجو (احتمال یافتن بهینه کلی بیشتر)
  • نوسان: الگوریتم در حال کاوش است (نشانه خوب در اوایل)
  • ثابت شدن: الگوریتم به همگرایی رسیده

۴. مقایسه الگوریتم‌ها:

✅ زمان اجرا کوتاه‌تر = سرعت بالاتر
✅ Fitness کوچک‌تر = جواب بهتر
✅ بهترین الگوریتم = کمترین fitness با زمان معقول
⚠️ توجه: نتایج ممکن است در هر اجرا کمی متفاوت باشند (ماهیت تصادفی)

۵. استفاده از جدول داده‌ها:

  • صادرات داده‌ها: می‌توانید جدول را کپی کنید
  • تحلیل: با مشاهده جدول تکرارها، روند بهبود را ببینید
  • دیباگ: اگر الگوریتم کار نمی‌کند، جدول را بررسی کنید

۶. نکات عملکردی:

  • مرورگر: از Chrome یا Edge برای عملکرد بهتر استفاده کنید
  • موبایل: صفحه کاملاً Responsive است
  • Timeout: اگر بیش از ۲ دقیقه طول کشید، پیام خطا نمایش می‌دهد
  • Refresh: برای شروع از اول، صفحه را Refresh کنید

🔬 مفاهیم تخصصی

۱. Fitness Function (تابع برازندگی):

تابعی است که کیفیت یک جواب را ارزیابی می‌کند.

  • TSP: مجموع فاصله‌های مسیر (کوچک‌تر = بهتر)
  • بهینه‌سازی: مقدار تابع هدف (مثلاً Sphere Function)
  • هدف: کمینه کردن این مقدار

۲. Exploration vs Exploitation:

  • Exploration: کاوش فضای جستجو برای یافتن مناطق جدید
  • Exploitation: بهره‌برداری از مناطق خوب شناخته شده
  • تعادل: الگوریتم خوب باید بین این دو متعادل باشد

۳. Convergence (همگرایی):

  • Premature Convergence: همگرایی زودرس به بهینه محلی
  • Slow Convergence: همگرایی کند (نیاز به تکرار بیشتر)
  • Criteria: معیار توقف (تعداد تکرار یا بدون بهبود)

۴. Local vs Global Optimum:

🔵 بهینه محلی (Local): بهترین جواب در یک ناحیه محدود
🔴 بهینه کلی (Global): بهترین جواب در کل فضای جستجو
🎯 هدف الگوریتم‌های فراابتکاری: یافتن بهینه کلی یا نزدیک به آن

۵. No Free Lunch Theorem:

هیچ الگوریتمی برای همه مسائل بهترین نیست. انتخاب الگوریتم به نوع مسئله بستگی دارد.

❓ سوالات متداول (FAQ)

چرا نتایج هر بار متفاوت است؟

الگوریتم‌های فراابتکاری از اعداد تصادفی استفاده می‌کنند. این ماهیت آن‌هاست. برای نتایج قابل اعتماد، چند بار اجرا کنید و میانگین بگیرید.

چرا الگوریتم Cuckoo در بهینه‌سازی عددی غیرفعال است؟

این الگوریتم در بهینه‌سازی عددی ناپایدار است و ممکن است باعث crash شود. در TSP بدون مشکل کار می‌کند.

چرا مقایسه الگوریتم‌ها طولانی است؟

۱۰ الگوریتم (یا ۹ در بهینه‌سازی) به صورت پشت سر هم اجرا می‌شوند. هر کدام ۲-۵ ثانیه طول می‌کشد. مجموعاً ۲۰-۶۰ ثانیه.

چطور می‌توانم نتایج را ذخیره کنم؟

از دکمه "نمایش داده‌ها در جدول" استفاده کنید. سپس جدول را کپی کنید یا screenshot بگیرید.

آیا می‌توانم از API استفاده کنم؟

بله! به صفحه "نمونه‌های API" بروید. نمونه‌های کامل برای C#, Python, و JavaScript موجود است.

حداکثر تعداد تکرار چقدر است؟

  • اجرای تکی: ۱۰۰۰
  • مقایسه: ۵۰ (برای جلوگیری از timeout)
  • TSP: حداکثر ۲۰۰۰ راس
  • بهینه‌سازی عددی: حداکثر ۲۰۰۰ جمعیت/عامل

چرا انیمیشن کند است؟

سرعت شبیه‌سازی را از slider تنظیم کنید. مقدار کمتر = سریع‌تر.

🎓 سناریوهای استفاده عملی

سناریو ۱: مقایسه الگوریتم‌ها برای TSP

  1. نوع مسئله: TSP
  2. تعداد راس‌ها: ۲۰
  3. کلیک روی "تولید تصادفی راس‌ها"
  4. تعداد تکرار: ۳۰
  5. کلیک روی "مقایسه همه الگوریتم‌ها"
  6. صبر کنید تا نتایج نمایش داده شود
  7. بهترین الگوریتم را با ستاره 🏆 ببینید

سناریو ۲: بررسی عمیق یک الگوریتم

  1. الگوریتم: PSO
  2. نوع: بهینه‌سازی عددی
  3. جمعیت: ۵۰
  4. تکرار: ۱۰۰
  5. سرعت: ۱۰۰ ms
  6. اجرا کنید و انیمیشن را تماشا کنید
  7. نمودار همگرایی را بررسی کنید
  8. "نمایش داده‌ها" را بزنید تا جزئیات هر تکرار را ببینید

سناریو ۳: آزمایش تأثیر پارامترها

  1. یک الگوریتم را انتخاب کنید (مثلاً GA)
  2. اجرا با ۲۰ تکرار
  3. نتیجه را یادداشت کنید
  4. اجرا با ۵۰ تکرار
  5. مقایسه کنید: آیا نتیجه بهتر شد؟
  6. همین کار را با اندازه جمعیت مختلف تکرار کنید