智能优化算法:风驱动优化算法

智能优化算法:风驱动优化算法-附代码

@[toc]
摘要: 风驱动优化(Wind Driven Optimization,WDO)算法是由Bayraktar Z 等人在 2010年提出的一种基于群体的全局优化算法 。该算法基于对简化的空气质点受力运动模型的模拟,其核心是研究空气质点在大气中的受力运动情况,结合牛顿第二定律及理想气体状态方程,推导出空气质点在每次迭代中的速度和位置更新方程。相比于其他智能优化算法,该算法更新方程具有一定的物理意义,能够保证空气质点的全局“探索”能力与局部“开发”能力的平衡。

1.算法原理

风驱动优化算法(WDO)的启发来自于大气的流动,也就是风的运动可以自动补偿大气压力的不平衡 。根据牛顿第二定律来描述一个极小空气单元的运动规律,以空气单元的最终流动位置为候选解,从而完成对问题的最优求解,该算法概念明确、清晰、易于理解,是自然启发式算法研究领域的一种新型全局优化算法。

1.1 参数的编码

设空气 P 中的空气单元个体数为 S ,每个个体的位置矢量的维数 为D 。该种群可以用一个 SxD的矩阵来表示:
P(S,D)=\left[\begin{matrix} K_p^1&K_i^1&K_d^1\\ K_p^2&K_i^2&K_d^2\\ ...&...&... \\ K_p^s&K_i^s&K_d^s\\ \end{matrix}\right] \tag{1}
考虑到空气受地域的影响,可以由用户根据具体工程背景决定各个参数的取值范围,初始空气单元在相应的取值范围内随机产生。

1.2 适应度函数的选取

WDO算法在搜索进化过程中不仅用压力函数值来评价个体或解的优劣,并作为以后空气单元位置更新的依据,使得初始解逐步向最优解迭代。压力函数是空气单元优化算法与控制系统结合的纽带,指导着算法按控制目标要求不断迭代。

1.3 空气单元运动范围的确定

对于每一维度,风驱动优化算法只允许空气单元在设定的范围内运动。在任何维度中,如果空气单元试图冲出这些界限,那么这些特殊的维度位置就被设置为界限值。因此空气单元位置约束如下:
u_{new}=\begin{cases} u_{max},u>u_{max}\\ u_{min},u<u_{min} \end{cases}\tag{2}

1.4 风驱动中风的抽象化及空气单元的更新

不同地区的不同温度导致空气密度和大气压不同,不同大气压使空气由气压高的地区流向气压低的地区。导致这种流动原因是气压梯度 \Delta P ,它可以通过距离的变化计算出来,在直角坐标系中表示如下:
\Delta P = (\frac{\delta P}{\delta x},\frac{\delta P}{\delta y},\frac{\delta P}{\delta z})\tag{3}
特别地,风从高压地区向低压地区做匀速运动 。为了表明气压梯度降低的方向,式(4)中添加了负号。考虑到空气有限的质量和体积 \delta V,压强梯度力F_{PG}表示如下:
F_{PG}= -\Delta P\delta V \tag{4}
在风的抽象化中,假设大气是均匀的,并符合流体静力学平衡。由直角坐标系中流体动力学方程,空气的水平流动强于垂直流动,即认为风只有水平运动,即风产生原因全部来自水平压力的变化。

根据牛顿第二运动定律,作用在空气单元上的合力方向下的加速度 a 计算如下:
\rho a=\sum F_i \tag{5}
其中 ρ 表示极小空气单元的密度, F_i 代表作用在空气单元上的力。为了把空气压力和空气密度和温度联系起来,可以利用如下气体定律:
P = \rho RT \tag{6}
其中 P 表示压力, R 代表通用气体常量, T 代表温度。

压强梯度力是使空气单元流动的基本力,然而存在阻止空气单元流动的摩擦力F_F,由于作用在大气上的摩擦力非常复杂,在这里简化如下:
F_F=-\rho au \tag{7}
其中 α 为摩擦系数, u 为风的速度矢量。

在实际三维空间里,重力F_G是一个垂直于地球表面的力。然而,如果把地球中心当做直角坐标系的原点,重力可简化为:
F_G=\rho \delta Vg \tag{8}
地球的旋转造成参考坐标系旋转,从而增加了科氏力。科氏力使风的方向从它的出发点发生偏转,偏转的角度和地球的旋转、对流层的纬度以及空气单元的流动速度有直接关系。科氏力的定义如下:
F_c = -2\Omega*u\tag{9}
其中 Ω 表示地球的自转。

把式(4)、式(7)~式(9)代入方程(5)右边,得
\rho \frac{\Delta u}{\Delta t}=(\rho \delta Vg)+(-\Delta P\delta V)+(-\rho au) + (-2\Omega u)\tag{10}
式(10)中,设时间差 \Delta t= 1δV = 1 ,则可化简式(10)为:
\rho \Delta u = (\rho g)+(-\Delta P)+(-\rho au) + (-2\Omega u) \tag{11}
利用式(6),可以把密度 ρ写成压力的形式,并将温度和普通气体常数代入式(11)得:
\frac{P_{cur}}{RT}\Delta u=(\frac{p_{cur}}{RT}g) - \Delta P - \frac{p_{cur}}{RT}au+(-2\Omega *u)\tag{12}
其中 p_{cur} 代表在当前压力值。式(12)两边同时除以p_{cur} /RT得:
\Delta u = g+(-\Delta P\frac{RT}{p_{cur}})-au+(\frac{-2\Omega *uRT}{p_{cur}})\tag{13}
其中, \Delta u= u_{new} - u_{cur} ,其中 u_{cur} 当前迭代的速度, u_{new}表示下一个迭代的速度。用代入式(13)得:
u_{new}=(1-a)u_{cur}+g+(-\Delta P*RT/P_{cur})+(-2\Omega *uRT/p_{cur})\tag{14}
其中,矢量 g 可以表示为: g= |g|(0- x_{cur} )。压强梯度压力 (\Delta P) 是使空气单元从当前位置移动到最优压力位置的一个力。因此有 \Delta P 的大小为空气单元当前的压力 p_{cur} 与目前发现的最佳压力 p_{opt} 的差,压强梯度压力的方向由当前位置 x_{cur} 指向最优位置 x_{opt}\Delta P 可以简单表示为:
\Delta P = |p_{new}-p_{opt}|(x_{cur}-x_{opt})\tag{15}
由此可得:
u_{new}=(1-a)u_{cur}+gx_{cur}+(-|p_{new}-p_{opt}|(x_{cur}-x_{opt})*RT/P_{cur})+(-2\Omega *uRT/p_{cur})\tag{16}
在式(16)中,科氏力表示为地球自转速度和空气单元加速度的矢量积。科氏力的影响可以简单地表示为:由其他相同空气单元随机选择速度 u_{cur}^{otherdim}来代替,设c= -2|Ω|RT ,把简化的科氏力代入(16),得:
u_{new}=(1-a)u_{cur}+gx_{cur}+(-|p_{new}-p_{opt}|(x_{cur}-x_{opt})*RT/P_{cur})+(cu_{cur}^{otherdim}/p_{cur})\tag{17}
为了防止压力值过高,风速可能会变得非常大,风驱动优化算法的性能也会降低。可以利用排序法把所有空气单元以压力值按降序排序,这样可以把方程(17)写成:
u_{new}=(1-a)u_{cur}+gx_{cur}+((x_{cur}-x_{opt})*RT|1/i - 1|)+(cu_{cur}^{otherdim}/i)\tag{18}

其中 i 代表所有空气单元的排名。由此得到位置更新方程如下:
x_{new}=x_{cur}+(u_{new}\Delta t)\tag{19}

其中 x_{cur} 是搜索空间中空气单元的当前位置, x_{new} 是下一个循环状态新的位置。在搜索空间中,所有的空气单元在随机位置以随机速度移动。利用公式(18)和(19),每一个空气单元的速度和位置在每次迭代中都会得到调整,如同空气单元向最优位置移动一样,因此,最后的循环是最优的解决办法。

风驱动优化算法的流程如图1所示:

图1.风驱动优化算法流程图

2.算法结果

算法结果

3.参考文献

[1] Bayraktar Z,Komurcu M,Bossard J A,et al.The wind driven optimization technique and its application in elec-
tromagnetics[J].IEEE Transactions on Antennas and Propa-gation,2013,61(5):2745-2755.

[2] 陈彬彬,曹中清,余胜威.基于风驱动优化算法WDO的PID参数优化[J].计算机工程与应用,2016,52(14):250-253+260.

4.Matlab代码

https://mianbaoduo.com/o/bread/aJqam58=

5.Python代码

https://mianbaoduo.com/o/bread/YZmam5lp

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容