Sailfish Optimization (SFO) Algorithm (with MATLAB code)

Let me make a statement first: the article is directly copied and pasted from the push in my personal official account, so friends who are interested in intelligent optimization algorithms can follow my personal official account: heuristic algorithm discussion . From time to time, I will share different intelligent optimization algorithms in the official account, classic ones, or new intelligent optimization algorithms proposed in recent years, with MATLAB code attached.

 

"I haven't updated for a long time, I've been waiting for a long time~

The Sailfish optimization algorithm pushed today was proposed in 2019, and you can use it as a comparison algorithm. "

Sailfish Optimizer (SFO) is designed from the simulation of sailfish predation on sardines in the ocean. Strictly speaking, it should be called Sailfish Optimizer. The authors evaluate the SFO algorithm on 24 classic unimodal and multimodal Benchmark functions, comparing six different meta-heuristic algorithms. Experimental results show that the SFO algorithm has better performance than all compared algorithms. The original references for the SFO algorithm are as follows:

“Shadravan S, Naji H R, Bardsiri V K. The Sailfish Optimizer: A novel nature-inspired metaheuristic algorithm for solving constrained engineering optimization problems[J]. Engineering Applications of Artificial Intelligence, 2019, 80: 20-34.”

01
Source of inspiration

The SFO algorithm is inspired by a group of hunting sailfish, simulating the predation process of sailfish. In nature, they hunt in packs, as shown in Figure 1. The following is an introduction to the attack process in turn: 1) After finding the prey, the sailfish will drive it to the surface of the water; 2) After reaching a suitable position, the sailfish will surround the entire fish school; 3) The sardine itself has strong mobility , very challenging for the sailfish; 4) When attacking, the sailfish will either use its beak to make a violent attack, injuring several sardines, or interfere with the sardines, confusing them and disrupting their formation; 5) Sailfish have the highest speed ever recorded among aquatic vertebrates, and sardines simply cannot avoid fatal puncture injuries. Once wounded sardines are separated from the school, they are quickly caught by the sailfish; 6) sailfish change color from the usual blue-silver sides to darken to almost black before starting to attack. Based on the hunting process of sailfish above, the author established a corresponding mathematical model, which can be divided into three stages: alternate attack, prey capture and position replacement.

Figure 1 Predation process of sailfish

02
Algorithm design

As in previous posts, I will not edit mathematical formulas in the official account yet. Therefore, this part of the content is first written in the Word document, then made into a picture, and finally imported.

03
Calculation process

The calculation process of the SFO algorithm is shown in Figure 2:

Figure 2 Sailfish optimization algorithm flow chart

04
Experimental simulation

A simple test of the performance of the SFO algorithm. The SFO algorithm is used for function optimization, and its MATLAB program is written strictly according to the original references. In addition, the population size is 30, the maximum number of iterations is 1000, and the benchmark function uses the CEC2005 test set.

Here we take the unimodal function Sphere (f1) and multimodal function Ackley (f10) in the CEC2005 test set as examples to show the convergence effect of the SFO algorithm in a 30-dimensional environment, as shown in Figure 3, and no further analysis will be made here up.

(a) f1

(b) f10

Fig.3 Convergence curve of SFO algorithm

05
MATLAB code

The MATLAB code of the SFO algorithm can be obtained by copying the link below. The code is written in strict accordance with the original references, with detailed comments.

(Focus on the public account: heuristic algorithm discussion)

For MATLAB codes of other intelligent optimization algorithms, you can visit my personal homepage to view:

(Focus on the public account: heuristic algorithm discussion)

Guess you like

Origin blog.csdn.net/jieyanping/article/details/130925904