(以下描述,均不是学术用语,仅供大家快乐的阅读)
飞蛾扑火算法(Moth-Flame Optimization)是受飞蛾围绕火焰飞行启发而提出的算法。算法提出于2015年5月(投稿日期),虽可算作一个新算法,不过无数研究者就像飞蛾见了火一样,发表了如此之多的论文,惊了。
飞蛾扑火算法中有两种个体,飞蛾和火焰,飞蛾选择并围绕火焰以螺线方式飞行搜索,搜索完后,火焰将移动位置,以保持火焰是飞蛾和火焰群体中最优的位置。
算法的流程简单,螺线搜索在之前的鲸鱼算法中也出现过,这里会较为详细的记录记录螺线搜索的具体情况。
显然,飞蛾扑火算法中有两种角色,飞蛾与火焰。初始时飞蛾与火焰的数量均为N。为了方便查看,将飞蛾的位置表示为XM ,火焰的位置为 XF。
初始化时,会在解空间内初始化N个飞蛾与M(M=N)个火焰。在算法过程中,飞蛾将会围绕它所选择的火焰飞行,之后将这N个飞蛾与M个火焰按优劣排序,并将M个火焰移动到较优的前M个个体的位置。其中火焰的数量M会随着迭代次数的改变而不断变化,论文中阶梯递减至1。
算法的主要步骤如下:
1 飞蛾选择火焰(将火焰分配给飞蛾)。
2 飞蛾围绕火焰飞行。
3 移动火焰到相应位置。
从步骤可以看出,算法中飞蛾的飞行是一种无贪心算法的操作,而火焰的移动则是一种变相的贪心操作。
初始化时,会有N个飞蛾和N个火焰(M=N),故每只飞蛾都可以选择互不相同的火焰。随着迭代次数的递增,火焰的数量会递减。其数量根据以下公式计算得出:
其图像如下图所示:
其实就是将火焰数量M线性递减到1,由于火焰数量是正数,故图像呈阶梯状。
随着迭代次数增加,火焰数量递减,每只飞蛾无法选择互不相同的火焰,此时可以随机选择火焰或者飞蛾群体按顺序依次往后选取,类似于取模。两种方式的差别不大。
该步骤是算法的核心计算步骤。
对于飞蛾 ,它围绕火焰 飞行后到达的新位置XM_new根据以下公式计算得出:
其图像如下
而算法中的飞行轨迹应该是这样的:
取出一维看看
其中i为计算次数。
图像就是cos函数图像的变形。考虑到飞蛾与火焰之间的距离会越来越短,其飞行图像应该与上图相反,即振幅越来越小,局部搜索能力越来越强。
N只飞蛾围绕M个火焰飞行后,会到N个新位置,计算这N个新位置的适应度值,将这N个新位置与M个火焰这(N+M)个位置按优劣排序,并将其中较优的M个位置作为下一轮中火焰的位置。
其飞蛾扑火算法流程图如下:
由于飞蛾扑火算法可以说是对蚁狮算法和鲸鱼算法的结合,这里就看看算法的图像,不再做其他处理了。
适应度函数 。
实验一:
从结果看来,飞蛾扑火算法的性能稳定也优于蚁狮算法,从图像看算法收敛性不如蚁狮算法但局部搜索性能要强于蚁狮算法。
可见螺线的局部搜索能力还是强于随机游走的,不过其全局搜索要弱于随机游走。相比蚁狮算法,飞蛾扑火算法更容易陷入局部最优(其实与蚁狮差不多,只要火焰/蚁狮陷入局部最优基本完蛋,不过蚁狮数量恒定,火焰数量递减,所有火焰更容易局部最优)。
飞蛾扑火算法是根据飞蛾围绕火焰飞行的行为而提出的算法。算法的结构比较简单,与蚁狮算法类似,只是搜索步骤将随机游走替换成了螺线搜索(当然还有跟多细节上的不同,可以看看原文)。算法的局部搜索能力非常强,依靠螺线就提供了全局搜索和局部搜索能力,其全局搜索和局部搜索能力强弱由其极半径决定,算法中由b决定。不过算法缺少跳出局部最优的能力,在平滑函数中的效果非常好,在局部最优较多的函数中效果中规中矩。
参考文献
Mirjalili S Moth-flame optimization algorithm: A novel nature-inspired heuristic paradigm[J] Knowledge-Based Systems, 2015, 89(NOV):228-249 提取码:koy9
以下指标纯属个人yy,仅供参考
目录
上一篇 优化算法笔记(二十四)帝王蝶算法
下一篇 优化算法笔记(二十六)和声搜索算法
在远古蛮荒时期,人们不知道有火,也不知道用火。到了黑夜,四处一片漆黑,野兽的吼叫声此起彼伏,人们蜷缩在一起,又冷又怕。由于没有火,人们只能吃生的食物,经常生病,寿命也很短。 天上有个大神叫伏羲,他看到人间生活得这样艰难,心里很难过,他想让人们知道火的用处。于是伏羲大展神通,在山林中降下一场雷雨。随着“咔”的一声,雷电劈在树木上,树木燃烧起来,很快就变成了熊熊大火。人们被雷电和大火吓着了,到处奔逃。不久,雷雨停了,夜幕降临,雨后的大地更加湿冷。逃散的人们又聚到了一起,他们惊恐地看着燃烧的树木。这时候有个年轻人发现,原来经常在周围出现的野兽的嚎叫声没有了,他想:“难道野兽怕这个发亮的东西吗?”于是,他勇敢地走到火边,他发现身上好暖和呀。他兴奋地招呼大家:“快来呀,这火一点不可怕,它给我们带来了光明和温暖!”这时候,人们又发现不远处烧死的野兽,发出了阵阵香味。人们聚到火边,分吃烧过的野兽肉,觉得自己从没有吃过这样的美味。人们感到了火的可贵,他们拣来树枝,点燃火,保留起来。每天都有人轮流守着火种,不让它熄灭。可是有一天,值守的人睡着了,火燃尽了树枝,熄灭了。人们又重新陷入了黑暗和寒冷之中,痛苦极了。 大神伏羲在天上看到了这一切,他来到最先发现火的用处的那个年轻人的梦里,告诉他:“在遥远的西方有个遂明国,那里有火种,你可以去那里把火种取回来。”年轻人醒了,想起梦里大神说的话,决心到遂明国去寻找火种。 年轻人翻过高山,涉过大河,穿过森林,历尽艰辛,终于来到了遂明国。可是这里没有阳光,不分昼夜,四处一片黑暗,根本没有火。年轻人非常失望,就坐在一棵叫“遂木”的大树下休息。突然,年轻人眼前有亮光一闪,又一闪,把周围照得很明亮。年轻人立刻站起来,四处寻找光源。这时候他发现就在遂木树上,有几只大鸟正在用短而硬的喙啄树上的虫子。只要它们一啄,树上就闪出明亮的火花。年轻人看到这种情景,脑子里灵光一闪。他立刻折了一些遂木的树枝,用小树枝去钻大树枝,树枝上果然闪出火光,可是却着不起火来。年轻人不灰心,他找来各种树枝,耐心地用不同的树枝进行摩擦。终于,树枝上冒烟了,然后出火了。年轻人高兴地流下了眼泪。 年轻人回到了家乡,为人们带来了永远不会熄灭的火种--钻木取火的办法,从此人们再也不用生活在寒冷和恐惧中了。人们被这个年轻人的勇气和智慧折服,推举他做首领,并称他为“燧人”,也就是取火者的意思。 火的好处: 火可以帮助我们做饭,取暖,利用火也可以发电。但是有时会由于不安全用火导致火灾,让我们的生命受到伤害,火有时也回烧坏好的物品,造成不必要的损失,所以要想让火造福于人类,要注意不要玩火,不要乱扔火种,看到火灾要及时报警。还要用湿毛巾掩饰住口鼻。马上撤离危险地带,在有风时要注意顺风跑。 发生火灾该怎么办: ①采用正确的灭火方法并选用适当的灭火工具积极扑救。当密闭的房间内起火,未准备好充足的灭火器材前,不要打开门窗。 ②拨打“119”报警。说清地点、火势、报警人姓名及电话号码。 ③报警后派人去街道路口迎候消防车。 火灾逃生应注意的事项 ①平时要有很强的消防意识。进入陌生场所应先了解安全出口、疏散通道、楼梯间的位置及是否关闭、是否上锁,查看消防栓等各项灭火、避难器具的位置。 ②发生火灾时保持镇静,迅速判断危险地点和安全地点,尽快撤离。 ③逃生时不可蜂拥而出或留恋财物。必须穿过火区时,应尽量用浸湿的衣物披裹身体,捂住口鼻,贴近地面。 ④如身上着火,千万别奔跑,可就地打滚,将身上的火苗压灭,或跳入就近的水池、水缸、小河等,或用厚重衣物覆盖压灭火苗。 ⑤如身处楼上,寻找逃生路一般向下不向上。进入楼梯间后,确定楼下未着火时再向下逃生,决不要往上跑。如楼梯或门口被大火封堵,楼层不高时,可利用布匹、床单、地毯、窗帘等制成绳索,通过窗口、阳台、下水管等滑下逃生。如楼层高,其他出路被封堵,应退到室内,关闭通往着火区的门、窗,有条件的用湿布料、毛巾等封堵着火区方向的门窗,并用水不断地浇湿,同时靠近没有火的一方的门窗呼救。晚上可用手电筒、白布摆动发出求救信号,决不可乘坐电梯,也不可贸然跳楼。
火不仅与古代的人类生活有关,而且仍然是我们现代生活的一部分。它为我们的房屋供暖、供水、烹饪食物、发电、驱动 汽车 等等。然而,鉴于它的复杂性,我们对火焰行为的复杂性仍有很多不了解的地方。
为了更深入地了解燃烧现象,一组来自学术界的研究人员、美国宇航局的格伦研究中心(Glenn Research Center)和该机构的生物和物理科学部门,以及其他组织,最近在国际空间站完成了一系列调查。“先进微重力燃烧实验”(简称ACME)项目的在轨测试始于2017年,其中包括六项成功的气体燃料非预混火焰研究。非预混火焰是指燃料和氧化剂在反应或点火前保持分离的火焰,如蜡烛火焰。在上面提到的许多日常使用场景中都存在预混火焰,即燃料和氧化剂在反应前混合。
六个ACME实验分别是:
燃烧速率模拟器(BRE) -在没有空气流动的情况下,演示的材料可以燃烧数分钟。
低层流扩散火焰(CLD)-在煤烟和高度稀释极端条件下产生基准数据,以改进计算模型。
气体冷却火焰研究(CFI-G)——产生没有增强的气态燃料的非预混冷却火焰,例如在地面测试中需要的加热反应物、脉冲等离子体或臭氧添加。
层流扩散火焰的电场效应(E-FIELD)-展示了电场在减少非预混火焰排放方面的潜在用途。
火焰设计——首次证明了准稳态非预混球形火焰,以及较大火焰熄灭导致的的辐射热损失。
球形扩散火焰(s-Flame)的结构和响应——为改进计算模型提供了火焰生长和熄灭的数据。
NASA科学家丹尼斯·斯托克说:“微重力环境使研究人员能够在没有重力影响的情况下 探索 火焰的行为,这样他们就可以研究火焰结构和行为背后的物理基础。”“这些知识可以帮助地球上的设计师和工程师开发更高效、更少污染、更安全的熔炉、发电厂、锅炉和其他燃烧系统。”
火牛阵 火牛阵源与历史故事
乐毅出兵半年,接连攻下齐国七十多座城池。最后只剩了莒城(今山东莒县)和即墨(今山东平度县东南)两个地方。莒城的齐国大夫立齐王儿子为新王,就是齐襄王。乐毅派兵进攻即墨,即墨的守城大夫出去抵抗,在战斗中受伤死了。即墨城里没有守将,差点儿乱了起来。这时候,即墨城里有一个齐王远房亲戚,叫做田单,是带过兵的。大家就公推他做将军,带领大家守城。田单跟兵士们同甘共苦,还把本族人和自己的家属都编在队伍里,抵抗燕兵。即墨人都很钦佩他,守城的士气旺盛起来了。乐毅把莒城和即墨围困了三年,没有攻下来。燕国有人妒忌乐毅,在燕昭王面前说:乐毅能在半年之内打下七十多座城,为什么费了三年还攻不下这两座城呢?并不是他没有这个能耐,而是想收服齐国人的心,等齐国人归顺了他,他自己当齐王。
燕昭王非常信任乐毅。他说:“乐毅的功劳大得没法说,就是他真的做了齐王,也是完全应该的。你们怎么能说他的坏话!”燕昭王还真的打发使者到临淄去见乐毅,封乐毅为齐王。乐毅十分感激燕昭王,但宁死也不肯接受封王的命令。这样一来,乐毅的威信反而更高了。又过了两年,燕昭王死了。太子即位,就是燕惠王。田单一听到这个消息,认为是个好机会,暗中派人到燕国去散布流言,说乐毅本来早就当上齐王了。为了讨先王(指燕昭王)的好,才没接受称号。如今新王即位,乐毅就要留在齐国做王了。要是燕国另派一个大将来,一定能攻下莒城和即墨。
燕惠王本来跟乐毅有疙瘩,听了这个谣言,就决定派大将骑劫到齐国去代替乐毅。乐毅本来是赵国人,就回到赵国去了。骑劫当了大将,接管了乐毅的军队。燕军的将士都不服气,可大伙儿敢怒而不敢言。骑劫下令围攻即墨,围了好几层。可是城里的田单,早已把决战的步骤准备好了。隔了不多天,燕国兵将听到附近老百姓在谈论。有的说:“以前乐将军太好了,抓了俘虏还好好对待,城里人当然用不到怕。要是燕国人把俘虏的鼻子都削去,齐国人还敢打仗吗?”
有的说:“我的祖宗的坟都在城外,要是燕国军队真的创起坟来,可怎么办呢?”这些议论传到骑劫耳朵里。骑劫就真的把齐国俘虏的鼻子都削去,又叫兵士把齐国城外的坟都刨了。
即墨城里的人听说燕国的军队这样虐待俘虏,全都气愤极了。他们还在城头上瞧见燕国的兵士刨他们的祖坟,恨得咬牙切齿,纷纷向田单请求,要跟燕国人拼个死活。田单还打发几个人装作即墨的富翁,偷偷地给骑劫送去金银财宝,说:“城里的粮食已经完了,不出几天就要投降。贵国大军进城的时候,请将军保全我们的家小。”骑劫高兴地接受了财物,满口答应。这样一来,燕军净等着即墨人投降,认为用不到再打仗了。田单挑选了一千多头牛,把它们打扮起来。牛身上披着一块被子,上面画着大红大绿、希奇古怪的花样。牛角上捆着两把尖刀,尾巴上系着一捆浸透了油的苇束。
一天午夜,田单下令凿开十几处城墙,把牛队赶到城外,在牛尾巴上点上了火。牛尾巴一烧着,一千多头牛被烧得牛性子发作起来,朝着燕军兵营方向猛冲过去。齐军的五千名“敢死队”拿着大刀长矛,紧跟着牛队,冲杀上去。城里,无数的老百姓都一起来到城头,拿着铜壶、铜盆,狠命地敲打起来。一时间,一阵震天动地的呐喊声夹杂着鼓声、铜器声,惊醒了燕国人的睡梦。大伙儿睡眼蒙胧,只见火光炫耀,成百上千脑袋上长着刀的怪兽,已经冲过来了。许多士兵吓得腿都软了,哪儿还想抵抗呢?别说那一千多头牛角上捆的刀扎死了多少人,那五千名敢死队砍死了多少人,就是燕国军队自己乱窜狂奔,被踩死的也不计其数。燕将骑劫坐着战车,想杀出一条活路,哪儿冲得出去,结果被齐兵围住,丢了性命。齐军乘胜反攻。整个齐国都轰动起来了,那些被燕国占领地方的将士百姓,都纷纷起兵,杀了燕国的守将,迎接田单。田单的军队打到哪儿,哪儿的百姓群起响应。不到几个月工夫就收复了被燕国和秦、赵、韩、魏四国占领的七十多座城。田军把齐襄王从莒城迎回临淄,齐国才从几乎亡国的境地中恢复过来。
欢迎分享,转载请注明来源:浪漫分享网
评论列表(0条)