zoukankan      html  css  js  c++  java
  • 人工水母搜索算法--JS

    1. 人工水母算法原理背景

          水母生活在世界上不同深度和温度的水中。它们酷似钟状,一些水母的直径小于1cm,然有些水母直径则非常大。它们有各种各样的颜色、大小和形状。大多数水母偏好海洋环境。它们进食的方式有两种:1.利用触手把食物送进嘴里;2.以触手过滤水中的微小的浮游生物,经口腕沟靠纤毛作用送入口.然而,它们捕食方式也有两种:1.食用洋流带来的任何食物(被动);2.主动捕食猎物,利用触手刺中猎物,令其动弹不得(主动)。、
          水母利用触手刺中猎物,释放毒素,令其麻木。它们不会攻击人,但是触碰到它们的人可能会被蛰死。有些水母刺人很疼,但是不是致命的。表现的症状有引起疼痛、红肿、瘙痒、麻木等。然而,箱水母,又称海黄蜂,非常危险,致人死亡。这类水母多数出现在澳大利亚、菲律宾沿海水域,印度洋和太平洋中部。当它们聚集在一起形成水母潮时,才是最危险的。
          水母可以自己控制移动。它们下侧像一把伞一样合拢,利用体内喷水反射前进。尽管它们拥有这种能力,但是它们大多数漂流在水中依靠洋流和潮汐运动。当条件有利时,水母会形成群,这种被称为水母潮。水母是一种脆弱的生物,维持水母潮的关键是它们相对洋流的方向,才不至于被搁浅。
          水母潮形成的因素包括:洋流、可利用的营养物、氧气的可用性、捕食和温度等。在这些因素中,洋流是水母潮形成的主要因素。因为水母可以生活在高咸度和低氧区域,所以它们无须和其他生物竞争食物。咸水含有大量的碘,有利于水母息肉的产生。海水温度的上升,有利于水母潮的产生。因为在这种情况下,水母更容易存活。总而言之,水母潮的形成离不开生态系统和洋流地影响。
          洋流(Ocean Current),即海流,也称洋面流,是指海水沿着一定方向有规律的具有相对稳定速度的水平流动,是从一个海区水平或垂直地向另一个海区大规模的非周期性的运动,是海水的主要运动形式。洋流的尺度非常大。例如,在开阔的海洋中,洋流移动大约是次中等尺度;它们的大小可能只有几百米左右的中尺度特征,或者少数可能在几十公里左右。它们可能横穿或环绕整个海洋盆地,就像墨西哥湾流(北大西洋)、黑潮流(太平洋)和阿古拉斯洋流(印度洋)。形成洋流地主要因素是太阳辐射和海平面地风。
          水母自身的运动和洋流的运动促成了水母潮的形成,这种现象在海洋中随处可见。水母去的地方,食物数量各不相同。因此,通过食物比例的比较,确定最佳位置。

    2. 人工水母算法数学模型

    2.1 模型假设

       2020年Chou等人提出人工水母算法.该算法基于三个理想化规则:

    1. 水母要么跟随洋流,要么在群内自身移动,这两者运动由时间控制机制切换;
    2. 在海洋中,水母寻找食物。它们更多被食物数量多的位置吸引;
    3. 找到的食物数量由该位置和对应的目标函数决定。

    2.2 洋流

          因为洋流中含有大量水母所需的营养物,所以水母才会被吸引过来。洋流的方向由水母种群位置的平均值和当前水母最好位置决定。洋流方向的定义如下:

    [vec{trend}=frac{1}{n_{pop}}Sigma{vec{trend_{i}}}=frac{1}{n_{pop}}Sigma{(X^*-e_cfrac{Sigma{X_i}}{n_{pop}})}=X^*-e_cmu ]

    Set  (df=e_cmu)

    即,

    [vec{trend}=X^*-df ]

    其中,(n_{pop})是水母种群数目;(X^*)表示当前水母种群中最好的位置;(e_c)是吸引力因子;(mu)表示种群的平均位置;(df)是当前最好位置于平均位置的差分。
          基于水母所有维度的正态分布假设,平均位置的({pmetasigma})领域内包含所有水母的可能性,其中({sigma})是分布的标准差。因此,

    [df = eta imessigma imes{rand}^{f}(0,1) ]

    Set  ({sigma={rand}^{alpha}(0,1) imesmu})
    因此,

    [df=eta imes{rand}^f(0,1) imes{rand}^alpha(0,1) imesmu ]

    对上式简化如下:

    [df=eta imes{rand}(0,1)mu ]

    其中,({e_c=eta imes{rand}(0,1)})
    从而,

    [vec{trend}=X^*-eta imes{rand}(0,1) imesmu ]

    每个水母现在位置的更新公式如下:

    [X_i(t+1)=X_i(t)+rand(0,1) imesvec{trend} ]

    即,

    [X_i(t+1)=X_i(t)+rand(0,1) imes(X^*-eta imes{rand}(0,1) imesmu) ]

    其中,({eta>0})是分布系数,({vec{trend}})的模有关。基于数值实验中的敏感度分析,({eta=3}).

    2.3 水母种群

          在水母种群中,有两种运动方式:主动运动和被动运动。水母群刚刚形成,多数水母进行被动运动,经过一段时间后,它们逐渐进行主动移动。
          被动运动:水母围绕自身位置移动,位置更新公式如下:

    [X_i(t+1)=X_i(t)+gamma imes{rand}(0,1) imes(U_b - L_b) ]

    其中,(U_b)(L_b)分别表示搜索空间的上下界;(gamma>0)是移动系数,与水母位置周围的运动长度有关。基于数值实验中的敏感度分析,(gamma=0.1).
          为了模拟主动运动,随机选取两个水母位置({i,j})来决定移动方向。当({j})位置的食物数量超过({i})位置的食物数量,则后者朝前者移动。反之,远离前者。所以,种群中的所有的水母朝更好的位置发现食物。
    1.移动方向公式如下:

    [vec{Step}=X_i(t+1)-X_i(t) ]

    其中,(vec{Step}={rand}(0,1) imesvec{Direction})

    [ vec{Direction} = egin{cases} X_j(t)-X_i(t), & ext{if $f(X_i)geq{f(X_j)}$} \ X_i(t)-X_j(t), & ext{if $f(X_i)leq{f(X_j)}$} end{cases} ]

    注意:这里适应度函数值是最小值。
    其中,(f)是目标函数。
    因此,

    [X_i(t+1)=X_i(t)+vec{Step} ]

    2.4 时间控制机制

          洋流中含有大量的营养物,所以引来水母。随着时间的流逝,越来越多的水母聚集在一起形成水母群。随着洋流中温度或风力的变化,种群中的水母朝另外洋流移动,并导致另外的水母群形成。在水母群中有被动运动和主动运动。刚开始水母侧重被动运动,随着时间的流逝,主动运动越来越受水母的欢迎。
          介于这种状况,作者引入时间控制机制。时间控制机制利用时间控制函数(c(t))(c_0)控制洋流和种群内部运动之间的转换。时间控制函数是随时间从0-1波动的随机值。公式如下:

    [c(t)=vert(1-frac{t}{Max_{iter}}) imes(2 imes{rand}(0,1)-1)vert ]

    其中,(C_0=0.5). 若(C(t))值大于0.5进行洋流,反之进行群内运动。其他,参数和别的算法一样。

    3. 初始化种群

          水母种群通常都是随机初始化的。这种方法的缺陷是收敛速度慢,易陷入局部最优且种群多样性低。为了提高初始化种群多样性,许多混沌映射被开发。比如,logistic map、tent map、Liebovitch map. 其中,logistic是最简单的一种混沌映射。这种初始化的种群比随机初始化种群更具有多样性。映射公式如下:

    [X_{i+1}=eta{X_{i}(1-X_{i})},0leq{X_{0}}leq1 ]

    (X_i)是第(i)个水母位置的逻辑混沌映射值;(X_0)用于产生初始种群,(X_0in(0,1),X_0 otin{0.0,0.25,0.5,0.75,1.0},eta=0.4)

    4. 边界处理

          海洋遍布世界。地球近似球形,所以当水母移动超出搜索边界,将会超边界相反的方向移动。公式如下:

    [ egin{cases} X^{'}_{i,d}=(X_{i,d}-U_{b,d})+L_b(d), & ext{ if $X_{i,d}>U_{b,d}$}\ X^{'}_{i,d}=(X_{i,d}-L_{b,d})+U_b(d), & ext{ if $X_{i,d}<U_{b,d}$} end{cases} ]

    其中,(X_{i,d})是第(i)个水母位置(d)维的分量;

  • 相关阅读:
    hexo常用命令笔记
    给hexo添加评论系统
    npm 使用代理
    几种网页重定向(自动跳转)的方法
    使用hexo搭建github博客
    在Pythonanywhere上部署Django
    Apache .htaccess语法之RewriteRule
    为Github项目创建文档
    Windows下WordPress搭建博客过程
    Windows下Discuz搭建论坛过程
  • 原文地址:https://www.cnblogs.com/mysterygust/p/14823365.html
Copyright © 2011-2022 走看看