精华内容
下载资源
问答
  • 最近在使用智能优化算法时,在相同数据下,结果会有差别。因为处理不同输入数据下的输出结果,所以需要降低输出结果的偏差。 智能优化算法,如粒子群算法中,相同数据下多次运行程序,结果还是有一些偏差。因此在...

    最近在使用智能优化算法时,在相同数据下,结果会有差别。因为处理不同输入数据下的输出结果,所以需要降低输出结果的偏差。
    智能优化算法,如粒子群算法中,相同数据下多次运行程序,结果还是有一些偏差。因此在算法中,运行一次算法,然后保存算法里面的随机值,在下一次程序运行时再使用这些随机值,这样就能保证结果无偏差或者偏差不大。
    在储存数据时,一般使用二维数组,但是面对迭代中的迭代,使用cell数组会很好的解决数据储存问题。
    在操作cell数组时,使用save(‘X.mat’,‘X’);储存X数据至X.mat。当使用这些数据时,使用X1=load(‘X.mat’);加载数据。

    展开全文
  • 遗传算法后使用bp进行优化,遗传算法容易陷入局部最优
  • 遗传算法优化BP网络,遗传算法优化bp网络每次结果不一样是为什么,matlab源码
  • 遗传算法优化BP网络,遗传算法优化bp网络每次结果不一样是为什么,matlab源码.rar
  • 智能优化算法:樽海鞘群优化算法-附代码 文章目录智能优化算法:樽海鞘群优化算法-附代码1.算法原理1.1种群初始化1.2 领导者位置更新1.3 追随者位置更新2.算法流程:3.算法结果4.参考文献5.MATLAB 代码 摘要:樽海鞘...

    智能优化算法:樽海鞘群优化算法-附代码


    摘要:樽海鞘群算法( salp swarm algorithm,SSA)是Seyedali Mirjalili等于2017年提出的一种新型智能优化算法[1]。 该算法模拟了樽海鞘链的群体行为,是一种较新颖的群智能优化算法。每次迭代中,领导者指导追随者,以一种链式行为,向食物移动。移动过程中,领导者进行全局探索,而追随者则充分进行局部探索,大大减少了陷入局部最优的情况。

    1.算法原理

    樽海鞘是一种海洋无脊椎动物,身体呈桶状且几乎完全透明,以水中浮游植物为食,通过吸入和喷出海水完成在水中移动。在深海中,樽海鞘以一种链式的群行为进行移动和觅食,这种“奇特”的群行为引起了研究者的兴趣。樽海鞘的链式群行为,通常个体首尾相接,形成一条“链”,依次跟随进行移动。在樽海鞘链中,分为领导者和追随者,领导者朝着食物移动并且指导着紧随其后的追随者的移动,追随者的移动按照严格的“等级”制度,只受前一个樽海鞘影响。这样的运动模式使樽海鞘链有很强的全局探索和局部开发能力。

    1.1种群初始化

    设搜索空间为 D × N D × N D×N 的欧氏空间, D D D 为空间维数, N N N 为种群数量。空间中樽海鞘的位置用 X n = [ X n 1 , X n 2 , . . . , X n D ] T X_{n}=[X_{n1},X_{n2},...,X_{nD}]^{T} Xn=[Xn1,Xn2,...,XnD]T表示,食物的位置用 F n = [ F n 1 , F n 2 , . . . , F n D ] T F_{n}=[F_{n1},F_{n2},...,F_{nD}]^{T} Fn=[Fn1,Fn2,...,FnD]T表示, n = 1 , 2 , 3 , . . . , N n=1,2,3,...,N n=1,2,3,...,N。搜索空间的上界为 u b = [ u b 1 , u b 2 , . . . , u b D ] ub=[ub_{1},ub_{2},...,ub_{D}] ub=[ub1,ub2,...,ubD],下界为 l b = [ l b 1 , l b 2 , . . . , l b D ] lb=[lb_{1},lb_{2},...,lb_{D}] lb=[lb1,lb2,...,lbD]
    X D × N = r a n d ( D , N ) . ( u b ( D , N ) − l b ( D , N ) ) + l b ( D , N ) (1) X_{D×N}=rand(D,N).(ub(D,N)-lb(D,N))+lb(D,N)\tag{1} XD×N=rand(D,N).(ub(D,N)lb(D,N))+lb(D,N)(1)
    种群中领导者用 X d 1 X_{d}^{1} Xd1表示,追随者用 X d i X_{d}^{i} Xdi表示, i = 2 , 3 , 4 , . . . , N ; d = 1 , 2 , 3 , . . . D i=2,3,4,...,N;d=1,2,3,...D i=2,3,4,...,N;d=1,2,3,...D

    1.2 领导者位置更新

    在樽海鞘链移动和觅食过程中,领导者的位置更新表示为:
    X d 1 = { F d + c 1 ( ( u b − l b ) c 2 + l b ) , c 3 ≥ 0.5 F d − c 1 ( ( u b − l b ) c 2 + l b ) , c 3 < 0.5 (2) X_{d}^{1}=\begin{cases}F_{d}+c_{1}((ub-lb)c_{2}+lb),c_{3}\geq{0.5}\\ F_{d}-c_{1}((ub-lb)c_{2}+lb),c_{3}<0.5\end{cases}\tag{2} Xd1={Fd+c1((ublb)c2+lb),c30.5Fdc1((ublb)c2+lb),c3<0.5(2)
    式中: X d 1 X_{d}^{1} Xd1 F d F_{d} Fd分别是第 d d d 维中第一个樽海鞘( 领导者) 的位置和食物的位置; u b ub ub l b lb lb 分别是对应的上下界。其中, c 1 、 c 2 、 c 3 c_{1}、c_{2}、c_{3} c1c2c3是控制参数。

    式( 2) 表明,领导者的位置更新仅与食物的位置有关。 c 1 c_{1} c1是优化算法中的收敛因子,起到平衡全局探索和局部开发的作用,是 SSA 中最重要的控制参数。 c 1 c_{1} c1的表达式为:
    c 1 = 2 e − ( 4 l L ) 2 (3) c_{1}=2e^{-(\frac{4l}{L})^{2}}\tag{3} c1=2e(L4l)2(3)
    式中: l l l 是当前迭代次数; L L L 是最大迭代次数。收敛因子是一个 2-0 的递减函数。

    控制参数 c 2 、 c 3 c_{2}、c_{3} c2c3是[0,1]的随机数,用来增强 X d 1 X_{d}^{1} Xd1的随机性,提高链群的全局搜索和个体多样性。

    1.3 追随者位置更新

    在樽海鞘链移动和觅食的过程中,追随者通过前后个体间的彼此影响,呈链状依次前进。它们的位移符合牛顿运动定律,追随者的运动位移为:
    X = 1 2 a t 2 + v 0 t (4) X=\frac{1}{2}at^{2}+v_{0}t\tag{4} X=21at2+v0t(4)
    式中: t t t 是时间; a a a 是加速度,计算公式为 a = ( v f i n a l − v 0 ) / t a=(v_{final}-v_{0})/t a=(vfinalv0)/t; v 0 v_{0} v0是初始速度,并且 v f i a n l = ( X d i − X d i − 1 ) / t v_{fianl}=(X_{d}^{i}-X_{d}^{i-1})/t vfianl=(XdiXdi1)/t

    考虑到在优化算法中, t t t 是迭代的,设迭代过程中 t = 1 t = 1 t=1,并且 v 0 = 0 v_{0}= 0 v0=0。那么式( 4) 可以表示为:
    X = X d i − X d i − 1 2 (5) X=\frac{X_{d}^{i}-X_{d}^{i-1}}{2}\tag{5} X=2XdiXdi1(5)
    式中: i ≥ 2 i≥2 i2; X d i X_{d}^{i} Xdi X d i − 1 X_{d}^{i-1} Xdi1分别是第 d d d 维中彼此紧连的两个樽海鞘的位置。因此,追随者的位置表示为:
    X d i ′ = X d i − X d i − 1 2 (6) X_{d}^{i'}=\frac{X_{d}^{i}-X_{d}^{i-1}}{2}\tag{6} Xdi=2XdiXdi1(6)
    式中, X d i ′ X_{d}^{i'} Xdi X d i X_{d}^{i} Xdi分别是第 d d d 维中更新后的追随者的位置和更新前追随者的位置。

    2.算法流程:

    1)初始化种群。根据搜索空间每一维的上界与下界,利用式(1)初始化一个规模为N ×D 的樽海鞘 群。
    2)计算初始适应度。计算 N 个樽海鞘的适应度值。
    3)选定食物。由于实际定位时我们不知道目标(即食物)的位置,因此,将樽海鞘群按照适应度值进行排序,排在首位的适应度最优的樽海鞘的位置设为当前食物位置。
    4)选定领导者与追随者。选定食物位置后,群体中剩余N −1 个樽海鞘,按照樽海鞘群体的排序,将排在前一半的樽海鞘视为领导者,其余樽海鞘视为追随者。
    5)位置更新。首先根据式(2)更新领导者的位置,再根据式(6)更新追随者的位置。
    6)计算适应度。计算更新后的群体的适应度。将更新后的每个樽海鞘个体的适应度值与当前食物的适应度值进行比较,若更新后樽海鞘的适应度值优于食物,则以适应度值更优的樽海鞘位置作为新的食物的位置。

    7)重复步骤4)-步骤6),直到达到一定迭代次数或适应度值达到终止门限,满足终止条件后,输出当前的食物位置作为目标的估计位置。

    3.算法结果

    在这里插入图片描述

    4.参考文献

    [1]Seyedali Mirjalili,Amir H. Gandomi,Seyedeh Zahra Mirjalili,Shahrzad Saremi,Hossam Faris,Seyed Mohammad Mirjalili. Salp Swarm Algorithm: A bio-inspired optimizer for engineering design problems[J]. Advances in Engineering Software,2017.

    [2]陈涛,王梦馨,黄湘松.基于樽海鞘群算法的无源时差定位[J].电子与信息学报,2018,40(07):1591-1597.

    [3]王斐,贾晓洪,李丽娟,王忠勇.基于樽海鞘群算法的图像匹配方法[J].弹箭与制导学报,2019,39(05):111-114.

    5.MATLAB 代码

    樽海鞘群优化算法
    改进算法matlab代码

    名称说明或者参考文献
    多子群的共生非均匀高斯变异樽海鞘群算法[1]陈忠云,张达敏,辛梓芸.多子群的共生非均匀高斯变异樽海鞘群算法[J/OL].自动化学报:1-9[2020-11-25].https://doi.org/10.16383/j.aas.c190684.
    基于疯狂自适应的樽海鞘群算法[1]张达敏,陈忠云,辛梓芸,张绘娟,闫威.基于疯狂自适应的樽海鞘群算法[J].控制与决策,2020,35(09):2112-2120.
    混沌映射与动态学习的自适应樽海鞘群算法(CDSSA)[1]卓然,王未卿.混沌映射与动态学习的自适应樽海鞘群算法[J].计算机工程与设计,2021,42(07):1963-1972.
    基于Levy飞行策略的改进樽海鞘群算法(LECUSSA)[1]张严,秦亮曦.基于Levy飞行策略的改进樽海鞘群算法[J].计算机科学,2020,47(07):154-160.
    基于混沌映射的自适应樽海鞘群算法(CASSA)[1]童斌斌,何庆,陈俊.基于混沌映射的自适应樽海鞘群算法[J].传感技术学报,2021,34(01):41-48.
    基于衰减因子和动态学习的改进樽海鞘群算法(RDSSA)[1]陈雷,蔺悦,康志龙.基于衰减因子和动态学习的改进樽海鞘群算法[J].控制理论与应用,2020,37(08):1766-1780.
    集成随机惯性权重和差分变异操作的樽海鞘群算法(ISSA)[1]张志强,鲁晓锋,隋连升,李军怀.集成随机惯性权重和差分变异操作的樽海鞘群算法[J].计算机科学,2020,47(08):297-301.
    面向全局搜索的自适应领导者樽海鞘群算法(ALSSA)[1]刘景森,袁蒙蒙,左方.面向全局搜索的自适应领导者樽海鞘群算法[J/OL].控制与决策:1-10[2021-07-30].https://doi.org/10.13195/j.kzyjc.2020.0090.
    一种基于折射反向学习机制与自适应控制因子的改进樽海鞘群算法(RCSSA)[1]范千,陈振健,夏樟华.一种基于折射反向学习机制与自适应控制因子的改进樽海鞘群算法[J].哈尔滨工业大学学报,2020,52(10):183-191.
    一种改进的樽海鞘群算法(MSSA)[1]陈连兴,牟永敏.一种改进的樽海鞘群算法[J].计算机应用研究,2021,38(06):1648-1652.
    正弦余弦算法的樽海鞘群算法[1]陈忠云,张达敏,辛梓芸.正弦余弦算法的樽海鞘群算法[J].计算机应用与软件,2020,37(09):209-214.

    算法相关应用

    名称说明或者参考文献
    基于樽海鞘算法的极限学习机(ELM)回归预测https://blog.csdn.net/u011835903/article/details/111073635 (原理一样,只是优化算法为樽海鞘算法)
    樽海鞘算法优化的PID参数优化https://blog.csdn.net/u011835903/article/details/109306387(原理一样,只是优化算法为樽海鞘算法)

    6.python代码

    个人资料介绍

    展开全文
  • 文章目录鲸鱼优化算法(Whale Optimization Algorithm,WOA)1.1 灵感1.2 数学建模和优化算法1.2.1 包围捕食(Encircling prey)1.2.2 气泡网攻击方式(Bubble-net attacking method)(利用阶段)1.2.3搜索猎物...

    在这里插入图片描述
    获取更多资讯,赶快关注上面的公众号吧!

    鲸鱼优化算法(Whale Optimization Algorithm,WOA)

      本文将介绍一种新的受自然启发的元启发式优化算法——鲸鱼优化算法(WOA),该算法模拟了座头鲸的社会行为,并引入了气泡网狩猎策略。点击“这里”,可以下载MATLAB源码。

    1.1 灵感

      鲸鱼被认为是世界上最大的哺乳动物。一头成年鲸可以长达 30 米,重 180 吨。这种巨型哺乳动物有 7 种不同的主要物种,如虎鲸,小须鲸,鳁鲸,座头鲸,露脊鲸,长须鲸和蓝鲸等。鲸通常被认为是食肉动物,它们从不睡觉,因为它们必须到海洋表面进行呼吸,但事实上,鲸鱼有一半的大脑都处于睡眠状态。

      鲸鱼在大脑的某些区域有与人类相似的细胞,这些细胞被称为纺锤形细胞(spindle cells)。这些细胞负责人类的判断、情感和社会行为。换句话说,纺锤形细胞使我们人类有别于其他生物。鲸鱼的这些细胞数量是成年人的两倍,这是它们具有高度智慧和更富情感的主要原因。已经证明,鲸鱼可以像人类一样思考、学习、判断、交流,甚至变得情绪化,但显然,这都只是在一个很低的智能水平上。据观察,鲸鱼(主要是虎鲸)也能发展自己的方言。

      另一个有趣的点是关于鲸鱼的社会行为,它们可独居也可群居,但我们观察到的大多数仍然是群居。它们中的一些物种(例如虎鲸)可以在整个生命周期中生活在一个家族中。最大的须鲸之一是座头鲸,一头成年座头鲸几乎和一辆校车一样大。它们最喜欢的猎物是磷虾和小鱼群。图1显示的就是这种哺乳动物。

    图1 座头鲸的气泡网进食行为

      关于座头鲸最有趣的事情是它们特殊的捕猎方法了。这种觅食行为被称为气泡网觅食法(bubble-net feeding method)。座头鲸喜欢在接近海面的地方捕食磷虾或小鱼。据观察,这种觅食是通过在圆形或类似数字“9”形路径上制造独特的气泡来完成的,如图 1 所示。在 2011 年之前,这一行为仅仅是基于海面观测的。然而,有研究者利用标签传感器研究了这种行为。他们捕获了9头座头鲸身上300个由标签得到的气泡网进食事件。他们发现了两种与气泡有关的策略,并将它们命名为上升螺旋(upward-spirals)双螺旋(doubleloops)。在前一种策略中,座头鲸会潜到水下 12 米左右,然后开始在猎物周围制造一个螺旋形的泡泡,并游向水面;后一种策略包括三个不同的阶段:珊瑚循环,用尾叶拍打水面以及捕获循环。这里不展开详细描述。

      但是气泡网捕食是只有座头鲸独有的一种特殊行为,而鲸鱼优化算法就是模拟了螺旋气泡网进食策略达到优化的目的。

    1.2 数学建模和优化算法

    1.2.1 包围捕食(Encircling prey)

      座头鲸可以识别猎物的位置并将其包围。由于最优设计在搜索空间中的位置不是先验已知的,WOA 算法假设当前的最佳候选解是目标猎物或接近最优解。在定义了最佳搜索代理之后,其他搜索代理将因此尝试向最佳搜索代理更新它们的位置。这种行为由下列方程表示:

    D ⃗ = ∣ C ⃗ X ⃗ ∗ ( t ) − X ⃗ ( t ) ∣ (1) \vec{D}=\left|\vec{C} \vec{X}^{*}(t)-\vec{X}(t)\right|\tag{1} D =C X (t)X (t)(1)
    X ⃗ ( t + 1 ) = X ⃗ ∗ ( t ) − A ⃗ ⋅ D ⃗ (2) \vec{X}(t+1)=\vec{X}^{*}(t)-\vec{A} \cdot \vec{D}\tag{2} X (t+1)=X (t)A D (2)

    其中t为当前迭代, A ⃗ \vec{A} A C ⃗ \vec{C} C 为系数向量, X ∗ X^{*} X 是当前最优解的位置向量, X ⃗ \vec{X} X 是当前解的位置向量,||表示绝对值操作,.表示元素相乘。每次迭代过程中有更优解出现时就需要更新 X ∗ X^{*} X A ⃗ \vec{A} A C ⃗ \vec{C} C 计算如下:
    A ⃗ = 2 a ⃗ ⋅ r ⃗ − a ⃗ (3) \vec{A}=2 \vec{a} \cdot \vec{r}-\vec{a}\tag{3} A =2a r a (3)
    C ⃗ = 2 ⋅ r ⃗ (4) \vec{C}=2 \cdot \vec{r}\tag{4} C =2r (4)

    其中 a ⃗ \vec{a} a 在迭代过程中从2线性地下降至0(探索和利用阶段均如此)。 r ⃗ \vec{r} r 为[0,1]之间的随机向量。

      图 2a 描述了等式(2)针对2D问题的基本原理,搜索代理的位置 ( X , Y ) (X,Y) (X,Y)可以根据当前最优解的位置 ( X ∗ , Y ∗ ) (X^{*},Y^{*}) (X,Y)进行更新,通过调整向量 A ⃗ \vec{A} A C ⃗ \vec{C} C 的值,可以找到相对于当前位置下一时刻最优代理附近的不同地方。在 3D 空间中搜索代理可能的更新位置如图 2b。通过定义随机向量 r ⃗ \vec{r} r ,可以到达图 2 中所示关键点之间的搜索空间内任何位置,因此等式(2)允许任何搜索代理在当前最优解的邻域内更新其位置,从而模拟了鲸鱼的包围捕食。

      相似的概念也可以扩展到 n 维搜索空间。

      注意图2中的两幅图均是在a=1和C=1情况下的。

    a

    b
    图2 2D和3D位置向量及其可能的下一个位置

    1.2.2 气泡网攻击方式(Bubble-net attacking method)(利用阶段)

      共设计了两种方法来对座头鲸的气泡网行为进行建模:

    1. 收缩包围机制:通过降低式(3)中 a ⃗ \vec{a} a 的值实现。注意 A ⃗ \vec{A} A 的波动范围也通过 a ⃗ \vec{a} a 降低,换句话说, A ⃗ \vec{A} A 是一个区间[-a,a]内的随机值,a 随着迭代进行从 2 降为 0。设置 A ⃗ \vec{A} A 中的随机值在[-1,1]之间,搜索代理的新位置可以定义为代理原始位置与当前最优代理位置之间的任意位置。图 3a 显示了 2D 空间中当 0 ≤ A ≤ 1 0 \leq A \leq 1 0A1 时从 ( X , Y ) (X,Y) (X,Y) 靠近 ( X ∗ , Y ∗ ) (X^{*},Y^{*}) (X,Y) 所有可能的位置。这种机制本质上就是包围捕食
    2. 螺旋更新位置。如图 3b,该方法首先计算鲸鱼位置 ( X , Y ) (X,Y) (X,Y) 与猎物位置 ( X ∗ , Y ∗ ) (X^{*},Y^{*}) (X,Y) 之间的距离,然后在鲸鱼与猎物位置之间创建一个螺旋等式,来模仿座头鲸的螺旋状移动:
      X ⃗ ( t + 1 ) = D ′ → ⋅ e b l ⋅ cos ⁡ ( 2 π l ) + X ∗ → ( t ) (5) \vec{X}(t+1)=\overrightarrow{D^{\prime}} \cdot e^{b l} \cdot \cos (2 \pi l)+\overrightarrow{X^{*}}(t)\tag{5} X (t+1)=D eblcos(2πl)+X (t)(5)
      其中 D ′ → = ∣ X ∗ → ( t ) − X ⃗ ( t ) ∣ \overrightarrow{D^{\prime}}=|\overrightarrow{X^{*}}(t)-\vec{X}(t)| D =X (t)X (t),表示第i头鲸鱼与猎物(当前最优解)之间的距离,b为常数,定义了对数螺线的形状,l是[-1,1]之间的随机数,符号“.”表示元素相乘。
    (a)收缩包围机制

    (b)螺旋更新位置
    图3 WOA中实现的气泡网搜索机制

      值得注意的是,座头鲸在一个不断缩小的圆圈内绕着猎物游动,同时沿着螺旋形路径游动。为了对这种同时发生的行为进行建模,假设有 50%的可能性在收缩包围机制和螺旋模型之间进行选择,以便在优化过程中更新鲸鱼的位置,数学模型如下:
    X ⃗ ( t + 1 ) = { X ⃗ ∗ ( t ) − A ⃗ ⋅ D ⃗  if  p < 0.5 D ′ → ⋅ e b l ⋅ cos ⁡ ( 2 π l ) + X ∗ → ( t )  if  p ≥ 0.5 (6) \vec{X}(t+1)=\left\{\begin{array}{ll} \vec{X}^{*}(t)-\vec{A} \cdot \vec{D} & \text { if } p<0.5 \\ \overrightarrow{D^{\prime}} \cdot e^{b l} \cdot \cos (2 \pi l)+\overrightarrow{X^{*}}(t) & \text { if } p \geq 0.5 \end{array}\right.\tag{6} X (t+1)={X (t)A D D eblcos(2πl)+X (t) if p<0.5 if p0.5(6)

    其中 p p p 为[0,1]之间的随机数。

    1.2.3搜索猎物(Search for prey)(exploration phase)

      除了泡泡网方法,座头鲸还会随机寻找猎物,同样基于可变 A ⃗ \vec{A} A 向量,事实上,座头鲸会根据彼此的位置进行随机搜索,因此使用随机值大于1或小于-1的 A ⃗ \vec{A} A 来迫使搜索代理远离参考鲸鱼。与利用阶段相反,这里将根据随机选择的搜索代理来更新搜索代理在探索阶段的位置,而不是根据目前为止最优的搜索代理。该机制和 ∣ A ⃗ ∣ > 1 |\vec{A}|>1 A >1 强调了探索,并允许WOA算法执行全局搜索。数学模型如下:
    D ⃗ = ∣ C ⃗ ⋅ X → r a n d − X ⃗ ∣ (7) \vec{D}=|\vec{C} \cdot {\overrightarrow X_{r a n d}}-\vec{X}|\tag{7} D =C X randX (7)
    X ⃗ ( t + 1 ) = X → rand  − A ⃗ ⋅ D ⃗ (8) \vec{X}(t+1)={\overrightarrow X_{\text {rand }}}-\vec{A} \cdot \vec{D}\tag{8} X (t+1)=X rand A D (8)

    其中 X → r a n d \overrightarrow X_{r a n d} X rand 为从当前种群中选择的随机位置向量(表示一头随机鲸鱼)。

      特定解附近满足 A ⃗ > 1 \vec{A}>1 A >1 的一些可能解如图 4 所示。

    图4 WOA中的探索机制(X*是一个随机选择的搜索代理)

      WOA算法首先随机初始化一组解,在每次迭代中,搜索代理根据随机选择的搜索代理或到目前为止获得的最优解更新它们的位置。将 a a a 参数由 2 随迭代次数降为 0,从而由探索逐步到利用。当 ∣ A ⃗ ∣ > 1 |\vec{A}|>1 A >1 时选择随机搜索代理, ∣ A ⃗ ∣ < 1 |\vec{A}|<1 A <1 时选择最优解更新搜索代理位置。根据 p p p 的值,WOA可以在螺旋运动和圆环运动之间进行切换。最后,通过满足终止准则来终止WOA算法。WOA算法的伪代码如图5所示。

    图5 WOA算法伪代码

    1.3 代码分析

      只要明白了原理的基本流程,其实代码就没有说明困难了,咱们主要介绍一下如何实现上述分析的几个重要原理,所要优化的问题的是三十个数的平方和最小( ∑ ( x 2 ) \sum(x^2) (x2)

    1. 参数初始化。初始时主要设置代理数量和最大迭代次数即可,其他算法相关的参数因为和当前迭代次数相关,需要在迭代中设置。
    SearchAgents_no=30; % 搜索代理数量
    Max_iteration=500; % 最大迭代次数
    
    1. 种群初始化。随机初始化所有代理各个维度上的位置值,需要保证在取值范围内。
    Positions=rand(SearchAgents_no,dim).*(ub-lb)+lb;
    
    1. 种群评估。评估种群中每个代理的目标值,如有某个代理由于当前最优解,则将其设为最优解。
    for i=1:size(Positions,1)
        % 计算每个代理的目标值
        fitness=fobj(Positions(i,:));
        % 更新最优解
        if fitness<Leader_score % 如果是最大化问题,这里就是">"
            Leader_score=fitness; 
            Leader_pos=Positions(i,:);
        end
    end
    
    1. 设置和迭代次数相关的算法参数
    a=2-t*((2)/Max_iter); % 等式(3)中a随迭代次数从2线性下降至0 
    %a2从-1线性下降至-2,计算l时会用到
    a2=-1+t*((-1)/Max_iter);
    
    1. 对每个代理的每一维度进行位置更新
    % Update the Position of search agents 
    for i=1:size(Positions,1)
        r1=rand(); % r1为[0,1]之间的随机数
        r2=rand(); % r2为[0,1]之间的随机数
    
        A=2*a*r1-a;  % 等式(3)
        C=2*r2;      % 等式(4)
    
        b=1;               %  等式(5)中的常数b
        l=(a2-1)*rand+1;   %  等式(5)中的随机数l
        p = rand();        %  等式(6)中的概率p
        for j=1:size(Positions,2)
            if p<0.5   
                if abs(A)>=1
                    rand_leader_index = floor(SearchAgents_no*rand()+1);
                    X_rand = Positions(rand_leader_index, :);
                    D_X_rand=abs(C*X_rand(j)-Positions(i,j)); % 等式(7)
                    Positions(i,j)=X_rand(j)-A*D_X_rand;      % 等式(8)
    
                elseif abs(A)<1
                    D_Leader=abs(C*Leader_pos(j)-Positions(i,j)); % 等式(1)
                    Positions(i,j)=Leader_pos(j)-A*D_Leader;      % 等式(2)
                end
            elseif p>=0.5
    
                distance2Leader=abs(Leader_pos(j)-Positions(i,j));
                % 等式(5)
                Positions(i,j)=distance2Leader*exp(b.*l).*cos(l.*2*pi)+Leader_pos(j);
            end
        end
    end
    
    1. 重复执行步骤3~步骤5
      程序运行结果如下:
    图6 优化结果

      可以看出对于一个30维度的单峰优化问题,算法可以很快的找到最优值值,感兴趣的读者也可以在源码上运行自己想要的目标函数,这里不再展示其他结果。

    展开全文
  • 1. 常见的群体智能优化算法分类2. 粒子群优化算法思想3. 粒子群优化算法的基本框架4. 对粒子群优化算法中惯性权重的认识5. 粒子群优化算法举例——求解旅行商问题6. 参考文献  同进化算法(见博客《[Evolutionary ...
     
     
    

      同进化算法(见博客《[Evolutionary Algorithm] 进化算法简介》,进化算法是受生物进化机制启发而产生的一系列算法)和人工神经网络算法(Neural Networks,简称NN,神经网络是从信息处理角度对人脑的神经元网络系统进行了模拟的相关算法)一样,群体智能优化算法也属于一种生物启发式方法,它们三者可以称为是人工智能领域的三驾马车(PS:实际上除了上述三种算法还有一些智能算法应用也很广泛,比如模拟金属物质热力学退火过程的模拟退火算法(Simulated Algorithm,简称SA),模拟人体免疫系统在抗原刺激下产生抗体过程的人工免疫系统算法(Artificial Immune System,简称AIS)等,但是相对三者而言,模拟退火和人工免疫系统算法已逐渐处于低潮期)。群体智能优化算法主要模拟了昆虫、兽群、鸟群和鱼群的群集行为,这些群体按照一种合作的方式寻找食物,群体中的每个成员通过学习它自身的经验和其他成员的经验来不断地改变搜索的方向。群体智能优化算法的突出特点就是利用了种群的群体智慧进行协同搜索,从而在解空间内找到最优解。

    1. 常见的群体智能优化算法分类

      常见的群体智能优化算法主要有如下几类:

      (1)蚁群算法(Ant Colony Optimization,简称ACO)[1992年提出];

      (2)粒子群优化算法(Particle Swarm Optimization,简称PSO)[1995年提出](简单易于实现,也是目前应用最为广泛的群体智能优化算法);

      (3)菌群优化算法(Bacterial Foraging Optimization,简称BFO)[2002年提出];

      (4)蛙跳算法(Shuffled Frog Leading Algorithm,简称SFLA)[2003年提出];

      (5)人工蜂群算法(Artificial Bee Colony Algorithm,简称ABC)[2005年提出];

      除了上述几种常见的群体智能算法以外,还有一些并不是广泛应用的群体智能算法,比如萤火虫算法、布谷鸟算法、蝙蝠算法以及磷虾群算法等等。

    2. 粒子群优化算法思想

      由于博主对粒子群优化算法比较熟悉,在硕士期间也进行了比较系统的学习,所以利用本博文系统的介绍一下应用最为广泛的PSO算法。

      粒子群优化算法是在1995年由Eberhart博士和Kennedy博士一起提出的,它源于对鸟群捕食行为的研究。它的基本核心是利用群体中的个体对信息的共享从而使得整个群体的运动在问题求解空间中产生从无序到有序的演化过程,从而获得问题的最优解。我们可以利用一个有关PSO的经典描述来对PSO算法进行一个直观的描述。设想这么一个场景:一群鸟进行觅食,而远处有一片玉米地,所有的鸟都不知道玉米地到底在哪里,但是它们知道自己当前的位置距离玉米地有多远。那么找到玉米地的最佳策略,也是最简单有效的策略就是是搜寻目前距离玉米地最近的鸟群的周围区域PSO就是从这种群体觅食的行为中得到了启示,从而构建的一种优化模型。

      在PSO中,每个优化问题的解都是搜索空间中的一只鸟,称之为“粒子”,而问题的最优解就对应为鸟群要寻找的“玉米地”。所有的粒子都具有一个位置向量(粒子在解空间的位置)和速度向量(决定下次飞行的方向和速度),并可以根据目标函数来计算当前的所在位置的适应值(fitness value),可以将其理解为距离“玉米地”的距离。在每次的迭代中,种群中的粒子除了根据自身的“经验”(历史位置)进行学习以外,还可以根据种群中最优粒子的“经验”来学习,从而确定下一次迭代时需要如何调整和改变飞行的方向和速度。就这样逐步迭代,最终整个种群的粒子就会逐步趋于最优解。

    3. 粒子群优化算法的基本框架

      在介绍PSO的算法流程之前,我们写给出PSO中常用的迭代算子的形式。令          

    代表粒子   的位置向量,           代表粒子   的速度向量(其中  

    为优化问题的维度大小),最早版本的粒子群优化算法的迭代算子形式如下:

      速度向量迭代公式:

                       

          (1)

      位置向量迭代公式:

           

           (2)

    其中在公式(1)中,    

      分别代表粒子  

    的历史最佳位置向量和种群历史最佳位置向量。根据公式(1)(2)可以看出,种群中的粒子通过不断地向自身和种群的历史信息进行学习,从而可以找出问题的最优解。

      但是,在后续的研究中表明,上述原始的公式中存在一个问题:公式(1)中    

    的更新太具有随机性,从而使得整个PSO算法的全局优化能力很强,但是局部搜索能力较差。而实际上,我们需要在算法迭代初期PSO有着较强的全局优化能力,而在算法的后期,整个种群应该具有更强的局部搜索能力。所以根据上述的弊端,Shi和Eberhart通过引入惯性权重修改了公式(1),从而提出了PSO的惯性权重模型:

      速度向量迭代公式:

                       

          (3)

    其中参数  

    称为是PSO的惯性权重(inertia weight),它的取值介于[0,1]区间,一般应用中均采取自适应的取值方法,即一开始令   ,使得PSO全局优化能力较强,随着迭代的深入,参数   进行递减,从而使得PSO具有较强的局部优化能力,当迭代结束时,   。参数         称为是学习因子(learn factor),一般设置为1.4961;而        

    为介于[0,1]之间的随机概率值。

       整个粒子群优化算法的算法框架如下:

      Step 1 种群初始化:可以进行随机初始化或者根据被优化的问题设计特定的初始化方法,然后计算个体的适应值,从而选择出个体的局部最优位置向量    

    和种群的全局最优位置向量  

      Step 2 迭代设置:设置迭代次数    

    ,并令当前迭代次数  

      Step 3 速度更新:根据公式(3)更新每个个体的速度向量;

      Step 4 位置更新:根据公式(2)更新每个个体的位置向量;

      Step 5 局部位置向量和全局位置向量更新:更新每个个体的    

    和种群的  

      Step 6 终止条件判断:判断迭代次数时都达到    

    ,如果满足,输出  

    ;否则继续进行迭代,跳转至Step 3

      对于粒子群优化算法的运用,主要是对速度和位置向量迭代算子的设计。迭代算子是否有效将决定整个PSO算法性能的优劣,所以如何设计PSO的迭代算子是PSO算法应用的研究重点和难点。

    4. 对粒子群优化算法中惯性权重的认识

      参数  

    被称之为是惯性权重,顾名思义   实际反映了粒子过去的运动状态对当前行为的影响,就像是我们物理中提到的惯性。如果   ,从前的运动状态很少能影响当前的行为,粒子的速度会很快的改变;相反,   较大,虽然会有很大的搜索空间,但是粒子很难改变其运动方向,很难向较优位置收敛,由于算法速度的因素,在实际运用中很少这样设置。也就是说,较高的   设置促进全局搜索,较低的  

    设置促进快速的局部搜索。

    5. 粒子群优化算法举例——求解旅行商问题

      旅行商问题(Traveling Salesman Problem,TSP)又译为旅行推销员问题、货郎担问题,简称为TSP问题,是最基本的路线问题和最典型的NP难问题,该问题是在寻求单一旅行者由起点出发,通过所有给定的需求点之后,最后再回到原点的最小路径成本。最早的旅行商问题的数学规划是由Dantzig等人于1959年提出的。

      下面为一个TSP问题的数据集,城市个数为50:

    37    52
       49    49
       52    64
       20    26
       40    30
       21    47
       17    63
       31    62
       52    33
       51    21
       42    41
       31    32
        5    25
       12    42
       36    16
       52    41
       27    23
       17    33
       13    13
       57    58
       62    42
       42    57
       16    57
        8    52
        7    38
       27    68
       30    48
       43    67
       58    48
       58    27
       37    69
       38    46
       46    10
       61    33
       62    63
       63    69
       32    22
       45    35
       59    15
        5     6
       10    17
       21    10
        5    64
       30    15
       39    10
       32    39
       25    32
       25    55
       48    28
       56    37
       30    40
    Ctrl+C 复制代码

      50个城市分布图:

      下面为PSO求解旅行商问题的matlab代码:

      主函数main.m:

    %% 该文件演示基于TSP-PSO算法
    clc;clear
    
    %% 载入数据
    data=load('eil51.txt')
    cityCoor=[data(:,2) data(:,3)];%城市坐标矩阵
    
    figure
    plot(cityCoor(:,1),cityCoor(:,2),'ms','LineWidth',2,'MarkerEdgeColor','k','MarkerFaceColor','g')
    legend('城市位置')
    ylim([4 78])
    title('城市分布图','fontsize',12)
    xlabel('km','fontsize',12)
    ylabel('km','fontsize',12)
    %ylim([min(cityCoor(:,2))-1 max(cityCoor(:,2))+1])
    
    grid on
    
    %% 计算城市间距离
    n=size(cityCoor,1);           %城市数目
    cityDist=zeros(n,n);           %城市距离矩阵
    for i=1:n
        for j=1:n
            if i~=j
                cityDist(i,j)=((cityCoor(i,1)-cityCoor(j,1))^2+...
                    (cityCoor(i,2)-cityCoor(j,2))^2)^0.5;
            end
            cityDist(j,i)=cityDist(i,j);
        end
    end
    nMax=1000;                      %进化次数
    indiNumber=50;               %个体数目
    individual=zeros(indiNumber,n);
    %^初始化粒子位置
    for i=1:indiNumber
        individual(i,:)=randperm(n);    
    end
    
    %% 计算种群适应度
    indiFit=fitness(individual,cityCoor,cityDist);
    [value,index]=min(indiFit);
    tourPbest=individual;                              %当前个体最优
    tourGbest=individual(index,:) ;                    %当前全局最优
    recordPbest=inf*ones(1,indiNumber);                %个体最优记录
    recordGbest=indiFit(index);                        %群体最优记录
    xnew1=individual;
    
    %% 循环寻找最优路径
    L_best=zeros(1,nMax);
    for N=1:nMax
        N
        %计算适应度值
        indiFit=fitness(individual,cityCoor,cityDist);
        
        %更新当前最优和历史最优
        for i=1:indiNumber
            if indiFit(i)<recordPbest(i)
                recordPbest(i)=indiFit(i);
                tourPbest(i,:)=individual(i,:);
            end
            if indiFit(i)<recordGbest
                recordGbest=indiFit(i);
                tourGbest=individual(i,:);
            end
        end
        
        [value,index]=min(recordPbest);
        recordGbest(N)=recordPbest(index);
        
        %% 交叉操作
        for i=1:indiNumber
           % 与个体最优进行交叉
            c1=unidrnd(n-1); %产生交叉位
            c2=unidrnd(n-1); %产生交叉位
            while c1==c2
                c1=round(rand*(n-2))+1;
                c2=round(rand*(n-2))+1;
            end
            chb1=min(c1,c2);
            chb2=max(c1,c2);
            cros=tourPbest(i,chb1:chb2);
            ncros=size(cros,2);      
            %删除与交叉区域相同元素
            for j=1:ncros
                for k=1:n
                    if xnew1(i,k)==cros(j)
                        xnew1(i,k)=0;
                        for t=1:n-k
                            temp=xnew1(i,k+t-1);
                            xnew1(i,k+t-1)=xnew1(i,k+t);
                            xnew1(i,k+t)=temp;
                        end
                    end
                end
            end
            %插入交叉区域
            xnew1(i,n-ncros+1:n)=cros;
            %新路径长度变短则接受
            dist=0;
            for j=1:n-1
                dist=dist+cityDist(xnew1(i,j),xnew1(i,j+1));
            end
            dist=dist+cityDist(xnew1(i,1),xnew1(i,n));
            if indiFit(i)>dist
                individual(i,:)=xnew1(i,:);
            end
            
            % 与全体最优进行交叉
            c1=round(rand*(n-2))+1;  %产生交叉位
            c2=round(rand*(n-2))+1;  %产生交叉位
            while c1==c2
                c1=round(rand*(n-2))+1;
                c2=round(rand*(n-2))+1;
            end
            chb1=min(c1,c2);
            chb2=max(c1,c2);
            cros=tourGbest(chb1:chb2); 
            ncros=size(cros,2);      
            %删除与交叉区域相同元素
            for j=1:ncros
                for k=1:n
                    if xnew1(i,k)==cros(j)
                        xnew1(i,k)=0;
                        for t=1:n-k
                            temp=xnew1(i,k+t-1);
                            xnew1(i,k+t-1)=xnew1(i,k+t);
                            xnew1(i,k+t)=temp;
                        end
                    end
                end
            end
            %插入交叉区域
            xnew1(i,n-ncros+1:n)=cros;
            %新路径长度变短则接受
            dist=0;
            for j=1:n-1
                dist=dist+cityDist(xnew1(i,j),xnew1(i,j+1));
            end
            dist=dist+cityDist(xnew1(i,1),xnew1(i,n));
            if indiFit(i)>dist
                individual(i,:)=xnew1(i,:);
            end
            
           %% 变异操作
            c1=round(rand*(n-1))+1;   %产生变异位
            c2=round(rand*(n-1))+1;   %产生变异位
            while c1==c2
                c1=round(rand*(n-2))+1;
                c2=round(rand*(n-2))+1;
            end
            temp=xnew1(i,c1);
            xnew1(i,c1)=xnew1(i,c2);
            xnew1(i,c2)=temp;
            
            %新路径长度变短则接受
            dist=0;
            for j=1:n-1
                dist=dist+cityDist(xnew1(i,j),xnew1(i,j+1));
            end
            dist=dist+cityDist(xnew1(i,1),xnew1(i,n));
            if indiFit(i)>dist
                individual(i,:)=xnew1(i,:);
            end
        end
    
        [value,index]=min(indiFit);
        L_best(N)=indiFit(index);
        tourGbest=individual(index,:); 
        
    end
    tourGbest
    minbest=min(L_best)
    %% 结果作图
    figure
    plot(L_best)
    title('算法训练过程')
    xlabel('迭代次数')
    ylabel('适应度值')
    grid on
    
    
    figure
    hold on
    plot([cityCoor(tourGbest(1),1),cityCoor(tourGbest(n),1)],[cityCoor(tourGbest(1),2),...
        cityCoor(tourGbest(n),2)],'ms-','LineWidth',2,'MarkerEdgeColor','k','MarkerFaceColor','g')
    hold on
    for i=2:n
        plot([cityCoor(tourGbest(i-1),1),cityCoor(tourGbest(i),1)],[cityCoor(tourGbest(i-1),2),...
            cityCoor(tourGbest(i),2)],'ms-','LineWidth',2,'MarkerEdgeColor','k','MarkerFaceColor','g')
        hold on
    end
    legend('规划路径')
    scatter(cityCoor(:,1),cityCoor(:,2));
    title('规划路径','fontsize',10)
    xlabel('km','fontsize',10)
    ylabel('km','fontsize',10)
    
    grid on
    ylim([4 80])
     目标函数:fitness.m

    function indiFit=fitness(x,cityCoor,cityDist)
    %% 该函数用于计算个体适应度值
    %x           input     个体
    %cityCoor    input     城市坐标
    %cityDist    input     城市距离
    %indiFit     output    个体适应度值 
    
    m=size(x,1);
    n=size(cityCoor,1);
    indiFit=zeros(m,1);
    for i=1:m
        for j=1:n-1
            indiFit(i)=indiFit(i)+cityDist(x(i,j),x(i,j+1));
        end
        indiFit(i)=indiFit(i)+cityDist(x(i,1),x(i,n));
    end

      PSO迭代收敛曲线图:

      PSO求解50个城市的TSP问题最小距离为473.1536,TSP求解规划路径图如下:

    6. 参考文献

    [1] Eberhart R C and Kennedy J. A new optimizer using particle swarm theory.  1995.

    [2] Shi Y and Eberhart R C. A modified particle optimizer. 1998.

    [3] Kennedy J. Particle swarm optimization. 2010.

     



    展开全文
  • 文章目录第五章 蚁群优化算法5.1 介绍5.2 人工蚂蚁的概念5.2.1 真实蚂蚁如何工作5.2.2 蚂蚁如何优化食物搜索5.2.3 什么是人工蚂蚁5.2.3.1 相同5.2.3.2 不同5.3 蚂蚁系统5.4 三种模型5.4.1 蚁密系统模型5.4.2 蚁量...
  • 现代优化算法

    千次阅读 2017-01-18 17:14:47
    现代优化算法是启发式算法,包括禁忌搜索(tabu search),模拟退火(simulated annealing),遗传算法(genetic algorithm),人工神经网络(neural networks)。 它们的共同目标是——求NP-hard组合优化问题的...
  • 智能优化算法

    千次阅读 2019-08-05 21:04:02
    人们总是能从大自然中得到许多启迪,从生物界的各种自然现象或过程中获得各种灵感,由此提出了许多能够解决复杂函数优化的启发式算法,主要分为演化算法和群体智能算法。 演化算法是一种模拟生物进化的随机计算模型...
  • 智能优化算法总结

    万次阅读 多人点赞 2015-12-15 21:56:55
    优化算法有很多,经典算法包括:有线性规划,动态规划等;改进型局部搜索算法包括爬山法,最速下降法等,模拟退火、遗传算法以及禁忌搜索称作指导性搜索法。而神经网络,混沌搜索则属于系统动态演化方法。梯度为基础...
  • 智能优化算法回顾

    千次阅读 2018-05-28 21:08:10
    当年在毕设的时候研究智能优化算法,工作中偶尔也会写些demo,今天看到这篇文章,赶紧收藏。 优化算法有很多,经典算法包括:有线性规划,动态规划等;改进型局部搜索算法包括爬山法,最速下降法等,模拟退火、遗传...
  • 梯度下降优化算法综述

    万次阅读 多人点赞 2016-09-09 00:21:27
    梯度下降优化算法综述   该文翻译自An overview of gradient descent optimization algorithms。   总所周知,梯度下降算法是机器学习中使用非常广泛的优化算法,也是众多机器学习算法中最常用的优化方法。几乎...
  • 优化算法

    千次阅读 2010-03-13 10:05:00
    PSO粒子群优化算法 1. 引言 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),由Eberhart博士和kennedy博士发明。源于对鸟群捕食的行为研究 PSO同遗传算法类似,是一种基于迭代的优化工具。系统...
  • 蚁群优化算法

    万次阅读 2016-11-11 10:31:26
    蚁群优化算法作为一种全局最优化搜素方法,同遗传算法一样,灵感都来源于自然界,并有良好的搜素性能。然而,从数学的角度来理解分析它们的工作方式是很难的,因为这些算法都具有很复杂的随机过程。  ACO算法的...
  • 随机优化算法,由于开始和过程都是随机的数值,所以每次产生的结果不一样。但大致收敛方向是一致的。  爬山法是一种局部最优的算法(本质上属于贪心法),也属于启发式的方法,它一般只能得到局部最优解。采用...
  • 深度学习中的优化算法

    千次阅读 2017-04-05 18:05:36
    一般来说,深度学习通过仔细的设计Objective function和constraints来确保优化问题是convex的,从而避开一下通用优化算法的难题。 优化(optimization)说的有点大,因为存在一阶优化(first-order)和二阶(second-...
  • 现代优化算法:遗传算法

    千次阅读 2020-05-07 19:49:01
    遗传算法(Genetic Algorithm,GA)是一种基于自然选择原理和自然遗传机制的搜索(寻优)算法,它是模拟自然界中的生命进化机制,在人工系统中实现特定目标的优化。遗传算法的实质是通过群体搜索技术,根据适者生存...
  • 浅谈MM优化算法以及CCP算法

    千次阅读 2020-05-22 15:56:05
    了解凸优化的应该都知道,凸差问题(Difference of convex)问题是太好求解的,这里参考Lipp和boyd(凸优化书籍的作者)的文章,提出了一种ccp(convex-concave procedure)算法来解决这个问题,另外对基础的ccp算法...
  • 一文搞懂RMSProp优化算法优化器

    千次阅读 2020-03-26 16:01:21
    首发于机器学习算法与自然语言处理关注专栏写文章【优化算法】一文搞懂RMSProp优化算法忆臻​哈尔滨工业大学 计算机科学与技术博士在读73 人赞同了该文章在前面我们讲了AdaGrad算法,见下:忆臻:Deep Learning 最...
  • 迭代优化算法

    万次阅读 2016-10-14 13:47:24
    如果学习机器学习算法,你会发现,其实机器学习的过程大概就是定义一个模型的目标函数J(θ),然后通过优化算法从数据中求取J(θ)取得极值时对应模型参数θ的过程,而学习到的参数就对应于机器学习到的知识。...
  • 粒子群优化算法

    千次阅读 2009-12-22 18:58:00
    粒子群优化算法 1. 引言 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),由Eberhart博士和kennedy博士发明。源于对鸟群捕食的行为研究 PSO同遗传算法类似,是一种基于迭代的优化工具。系统...
  • 优化算法:牛顿法

    千次阅读 2017-02-15 15:59:24
    
随着学习的深入,笔者越来越发现最优化方法的重要性,学习和工作中遇到的大多问题都可以建模成一种最优化模型进行求解,比如我们现在学习的机器学习算法,大部分的机器学习算法的本质都是建立优化模型,通过最...
  • 机器学习中的最优化算法总结

    千次阅读 2019-03-26 08:37:27
    导言 对于几乎所有机器学习算法,无论是有监督学习、无监督学习,...在这篇文章中,小编将对机器学习中所使用的优化算法做一个全面的总结,并理清它们直接的脉络关系,帮你从全局的高度来理解这一部分知识。 ...
  • 梯度下降优化算法总结

    千次阅读 2017-07-05 16:21:31
    一篇review:https://arxiv.org/abs/1609.04747三个梯度下降变种:批梯度...我们需要去计算整个数据集的梯度,然后计算的结果只拿去更新一步梯度,很明显随着数据集变大,批梯度下降会变得很慢而且也会很占内存。批梯度

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 177,060
精华内容 70,824
关键字:

优化算法每次结果不一样