در بهینه‌سازی ریاضی، **الگوریتم کرم شب تاب** یک الگوریتم فراابتکاری می‌باشد که توسط شین-یانگ و با الهام از رفتار چشمک زن کرم شب تاب ارائه شده‌است.

الگوریتم
--------

شبه کد الگوریتم کرم شب تاب به صورت زیر می‌باشد:

```
**Begin**
 1) Objective function: {\displaystyle f(\mathbf {x} ),\quad \mathbf {x} =(x\_{1},x\_{2},...x\_{d})};
 2) Generate an initial population of fireflies {\displaystyle \mathbf {x} \_{i}\quad (i=1,2,\dots ,n)};.
 3) Formulate light intensity I so that it is associated with {\displaystyle f(\mathbf {x} )}
 (for example, for maximization problems, {\displaystyle I\propto f(\mathbf {x} )} or simply {\displaystyle I=f(\mathbf {x} )};)
 4) Define absorption coefficient γ
```

```
 **While** (t < MaxGeneration)
 **for** i = 1: n (all n fireflies)
 **for** j = 1: i (n fireflies)
 **if** ({\displaystyle I\_{j}>I\_{i}}),
 Vary attractiveness with distance r via {\displaystyle \exp(-\gamma \;r)};
 move firefly i towards j;
 Evaluate new solutions and update light intensity;
 **end if**
 **end for** j
 **end for** i
 Rank fireflies and find the current best;
 **end while**
```

```
 Post-processing the results and visualization;
```

```
**end**
```

توجه داشته باشید که تعداد ارزیابی تابع هدف در هر تکرار، یک ارزیابی برای هر کرم شب تاب است، و همان‌طور که شبه کد بالا نشان می‌دهد *n* × *n نیست*. (بر اساس کد متلب یانگ) بنابراین تعداد کل ارزیابی تابع هدف (تعداد نسل) × (تعداد کرم شب تاب) است.

فرمول اصلی بروزرسانی برای هر جفت کرم شب تاب {\displaystyle \mathbf {x} \_{i}} و {\displaystyle \mathbf {x} \_{j}} به صورت زیر است

{\displaystyle \mathbf {x} \_{i}^{t+1}=\mathbf {x} \_{i}^{t}+\beta \exp[-\gamma r\_{ij}^{2}](\mathbf {x} \_{j}^{t}-\mathbf {x} \_{i}^{t})+\alpha \_{t}{\boldsymbol {\epsilon }}\_{t}}
جایی که {\displaystyle \alpha \_{t}} پارامتر کنترل اندازه مرحله می‌باشد، در حالی که {\displaystyle {\boldsymbol {\epsilon }}\_{t}} برداری تصادفی تولید شده بر ساس توزیع گاوسی یا توزیع دیگر می‌باشد.

می‌توان نشان داد که مورد محدود کننده است {\displaystyle \gamma \rightarrow 0} مطابق با استاندارد بهینه‌سازی ذرات ذره (PSO) است. در حقیقت، اگر حلقه داخلی (برای j) برداشته شود و روشنایی {\displaystyle I\_{j}} با بهترین جواب عمومی {\displaystyle g^{\*}} جایگزین شود، آنگاه FA اساساً تبدیل به PSO استاندارد می‌شود.

نقد
---

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

منابع
-----

1. ↑  Yang, X. S. (2008). *Nature-Inspired Metaheuristic Algorithms*. Luniver Press. ISBN 978-1-905986-10-1.
2. ↑  Almasi, Omid N.; Rouhani, Modjtaba (2016). "A new fuzzy membership assignment and model selection approach based on dynamic class centers for fuzzy SVM family using the firefly algorithm". *Turkish Journal of Electrical Engineering & Computer Sciences*. **4**: 1–19. doi:10.3906/elk-1310-253. Practical application of FA on UCI datasets.
3. ↑  Lones, Michael A. (2014). "Metaheuristics in Nature-Inspired Algorithms" (PDF). *GECCO '14*: 1419–1422. CiteSeerX 10.1.1.699.1825. doi:10.1145/2598394.2609841. ISBN 978-1-4503-2881-4. FA, on the other hand, has little to distinguish it from PSO, with the inverse-square law having a similar effect to crowding and fitness sharing in EAs, and the use of multi-swarms in PSO.
4. ↑  Weyland, Dennis (2015). "A critical analysis of the harmony search algorithm—How not to solve sudoku". *Operations Research Perspectives*. **2**: 97–105. doi:10.1016/j.orp.2015.04.001. For example, the differences between the particle swarm optimization metaheuristic and "novel" metaheuristics like the firefly algorithm, the fruit fly optimization algorithm, the fish swarm optimization algorithm or the cat swarm optimization algorithm seem negligible.

پیوند به بیرون
--------------

* پرونده‌های برنامه‌های Matlab موجود در کتاب: Xin-She Yang، الگوریتم‌های Metaheuristic- الهام گرفته از طبیعت، چاپ دوم، Luniver Press، (۲۰۱۰).