鲸鱼优化算法的实现

鲸鱼优化算法的实现

介绍

鲸鱼优化算法是数学和机器学习中解决优化问题的一种技术。它基于座头鲸的行为,利用座头鲸在海洋中捕食、包围猎物和制造泡沫网的操作。该算法由Mirjalili和Lewis于2016年提出。

在本文中,我们将介绍WOA算法的不同阶段。

座头鲸的历史

座头鲸是地球上最大的哺乳动物之一。它们有一种特殊的捕猎机制,称为泡泡网捕猎机制。它们很聪明,因为它们的大脑含有锭细胞和纤维。它们分三步进行捕猎−

  • 领导者座头鲸通过向下潜12米并找到猎物,在猎物周围创建一个螺旋状的泡泡。

  • 一只有经验的座头鲸协助其他座头鲸进行同步。

  • 所有其他座头鲸形成一个队列并试图攻击猎物。

WOA算法

受座头鲸捕食行为启发的WOA算法具有以下阶段。

1. 探索阶段:搜索模型

在这个阶段,代理(座头鲸)首先根据每个代理的位置随机搜索最佳解。搜索代理的位置使用随机选择的搜索代理进行更新。数学方程可以表示为

\mathrm{𝑊: =: |: m : *:Y_{rand}:-:Y: |}

\mathrm{ Y:(t+1) : =:Y_{rand}:-:a:*:W |}

其中Y rand 是当前种群中的随机位置向量。

[a,m]是系数。如果r是在范围[0,1]内的随机向量,则b线性地从2降到0维,如下所示

\mathrm{ a := :2 * b * r – b}

\mathrm{ m := :2 * r}

2. 模型包围

座头鲸在捕食时会包围猎物。当前最佳代理被视为最佳解,并接近最优解。通过这种包围行为,其他代理的位置被更新。

\mathrm{𝑊: =: |: m : *:Y’_{(t)}:-:Y(t): |}

\mathrm{ Y:(t+1) : =:Y’_{(t)}:-:a:*:W }

3. 泡泡网和开发

这个阶段有两种方法。

  • 缩小包围圈 −a的值是一个介于[-n,n]之间的随机值,而d的值在迭代过程中从2减小到0。对于任何一对a,比如[-2,2],搜索代理的新位置定义在当前最佳位置和原始位置之间。

  • 螺旋更新 −在这种机制中,我们计算鲸鱼与猎物之间的距离。鲸鱼的移动按照螺旋或螺线方程给出。

$$\mathrm{X:(t+1) : = 𝑊′′_:e^{pq}:_:2\pi:r:+:X’}$$

其中p是一个介于[-1,2]之间的随机数,p是螺旋的半径。

在Python中的实现

示例

!pip install pyMetaheuristic

from pyMetaheuristic.algorithm import whale_optimization_algorithm as woa
from pyMetaheuristic.utils import graphs
import numpy as np

# Easom Function - target func
def easy_om(var_values = [0, 0]):
   x_1, x_2  = var_values
   function_value = -np.cos(x_1) * np.cos(x_2) * np.exp(-(x_1 - np.pi) ** 2 - (x_2 - np.pi) ** 2)
   return function_value

plot_parameters = {
   'min_values': (-6, -6),
   'max_values': (6, 6),
   'step': (0.1, 0.1),
   'solution': [],
   'proj_view': '3D',
   'view': 'notebook'
}
graphs.plot_single_function(target_function = easy_om, **plot_parameters)

# Parameter of woa algorithm
parameters = {
   'hunting_party': 100,
   'min_values': (-6, -6),
   'max_values': (6, 6),
   'iterations': 20,
   'spiral_param': 0.4,
   'verbose': True
}

woa_value = woa(target_function = easy_om, **parameters)

variab = woa_value[0][:-1]
min   = woa_value[0][ -1]
print('Variables in the woa: ', np.around(variab, 4) , ' Minimum Value Found: ', round(min, 4) )

# Solution plotting woa
plot_parameters = {
   'min_values': (-6, -6),
   'max_values': (6, 6),
   'step': (0.1, 0.1),
   'solution': [variab],
   'proj_view': '3D',
   'view': 'notebook'
}
graphs.plot_single_function(target_function = easy_om, **plot_parameters)

输出

Iteration =  0  f(x) =  -2.675287991074243e-09
Iteration =  1  f(x) =  -0.5463250054450847
Iteration =  2  f(x) =  -0.9616666553027987
Iteration =  3  f(x) =  -0.9997741596613828
Iteration =  4  f(x) =  -0.9997741596613828
Iteration =  5  f(x) =  -0.9997741596613828
Iteration =  6  f(x) =  -0.9997741596613828
Iteration =  7  f(x) =  -0.9997741596613828
Iteration =  8  f(x) =  -0.9997741596613828
Iteration =  9  f(x) =  -0.9997741596613828
Iteration =  10  f(x) =  -0.9997741596613828
Iteration =  11  f(x) =  -0.9997741596613828
Iteration =  12  f(x) =  -0.9998973527853484
Iteration =  13  f(x) =  -0.9998973527853484
Iteration =  14  f(x) =  -0.9999426874370445
Iteration =  15  f(x) =  -0.9999426874370445
Iteration =  16  f(x) =  -0.9999820386300734
Iteration =  17  f(x) =  -0.9999860799836825
Iteration =  18  f(x) =  -0.9999903470458049
Iteration =  19  f(x) =  -0.9999966229369239
Iteration =  20  f(x) =  -0.9999984095434976
Variables in the woa:  [3.1414 3.142 ]  Minimum Value Found:  -1.0

结论

鲸鱼优化算法是一种解决机器学习、数学和科学中优化问题的新方法。灵感来自座头鲸及其捕猎习性,这种优化技术在解决现代问题中非常有用。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程