详解生物地理学优化(BBO)算法(二)

详解生物地理学优化(BBO)算法(二)


自从发表第一篇《详解生物地理学优化(BBO)算法(一)》已经过去十个月了。这期间不断的有网友通过微信公众号【汶河之滨】来咨询我BBO相关的问题,我也说过会进一步的剖析一下大家对该算法的改进方法以及分享我的思路。今天总算有时间静下心来做个汇总了。

一、 关于源码

要研究东西,首先是要追根溯源;其实,上篇文章我已经给大家分享了原著论文链接。如果全文通读一遍的话,就会在论文中发现作者其实已经分享了源代码的链接。通过链接,你又会发现作者的个人主页,还能够找到作者对该算法的进一步改进和完善;D,Simon教授在2017年还出了一本书《Evolutionary Computation with Biogeography-based Optimization》。研究生还是应该花多一些心思在培养自己收集资料的能力上。然后就是从万千的海量数据中筛选出满足自己需要的,不放过任何的蛛丝马迹。
再说下身为研究生对外文文献应该精读,特别是像这种影响力比较大的文献。我当时花了一个礼拜,把文章给翻译了一遍。翻译的过程可能不尽如人意,都是大致的臆测,但是翻译完之后就可以有个大致的理解。
拿到源码还是应该自己调试一下,结合论文中的那些看似天马行空的理论,落实到代码上就好理解了。作者已经写了很详细的使用说明Readme.txt.

二、 关于改进

对于刚开始选课题的同学来说,一般的思路是:我要解决一个什么问题,就是课题研究背景。根据大家所在的实验室、课题组,可能有这样那样的优化问题需要去求解,除非你的课题背景很新颖,具有开创性,否则只能从解决方法上面下功夫。我要选择什么样的工具,为了好发文章,要么自己提出一个新的思路,提出新的算法,要么对某个新的算法进行改进。
在对原创算法充分理解的基础上,怎样提出自己的改进算法是这篇文章要重点解决。

(一) 最优化理论体系

无论在生产管理、经营活动还是工程设计和建设中,都存在着利润最大、用料最省、效率最高等最优化问题。决策者通常是从许多种方案中选择和确立某一个方案为最佳的方案,其理论基础即为最优化理论,而选择最佳方案的方法就叫做最优化方法。传统的数学理论要从运筹学说起,就是线性规划问题;典型的是最速下降法、牛顿法、分支界定法、邻域搜索法和构造型算法等。随着面临的工程问题却也越来繁杂,并且表现出高维度、非线性、难以建模、多极值的特点。这些新涌现出来的复杂问题是传统算法等所不能解决的。因为,它们依赖于目标函数的解析性质、需要求导、有应用范围小、容易陷入局部最优等弱点。这就很难应用于复杂优化问题,让传统的优化方法处于尴尬的境地。
自然计算(Nature Inspired Computation),具有模仿自然界特点,通常是一类具有自适应、自组织、自学习能力的模型与算法,能够解决传统计算方法难于解决的各种复杂问题。教育部部长吴启迪教授写了一本叫做《自然计算导论》的书,可以买来看看。有很多我们都没有听说过的优化算法。
我总结了上述两种最优化问题解决方案,如下图所示。从自然辩证法来分析,其实这两种思路是可以相互结合的。在随机性方法中,也可以引入一些确定性方法来加快解决问题的速度。现在大家要解决的问题都是用数学模型很难表达的,想通过数学方法求解的方法是很难搞定的,那就不妨试一试自然计算。我们听说最早的应该是模拟退火优化算法和遗传算法。
为什么大家都在研究生物地理学优化算法?
1.这个名字很哄人。
2.这个算法还算比较新,意味着有可以改进的可能。
3.该算法的寻优机制的确很新颖,效率的确很高。
4.导师非让用这个算法。
详解生物地理学优化(BBO)算法(二)
详解生物地理学优化(BBO)算法(二)
详解生物地理学优化(BBO)算法(二)

(二) 旁征博引

上面确定要对BBO算法下手了,也读了作者的原著了;下面就要开始收集更多的资料吧。知网上所有关于BBO的论文都下载下来,进行整理和总结。看看别人的改进思路是什么样的。大家都把该算法应用在什么场景,有没有符合自己的研究方向的。通过对原文的阅读,我们应该把握的几个方向:

1、 BBO算法的优点

详解生物地理学优化(BBO)算法(二)

2、 BBO算法可以改进的地方

详解生物地理学优化(BBO)算法(二)

3、 原作者有什么思路

详解生物地理学优化(BBO)算法(二)

4、 对其他人的论文阅读,可以总结出其他人的思路:

详解生物地理学优化(BBO)算法(二)

1) 迁移模型

通过对大量论文的通读,可以了解到马海平等人对好几种迁移模型都进行了验证,并得出了结论说哪一种迁移模型最好。那么在迁移模型上下功夫还是可以有改进空间的。看你能否提出更多的迁移模型。

2) 变异模型

还有学者对变异模型进行了各种尝试,我们是否也能找出一种类似的模型呢?找到模型是否一定会有改进呢?

3) 扩充理论

在生物地理学的理论基础上,进一步完善,什么捕食者和被捕食者理论,什么XXX理论。哪怕这种XXX理论是你想象出来的,只要对算法有好的改进都是可以的。

4)算法融合

将BBO和各种已经很成熟的算法进行融合,融合的方式有很多种。模式一:一半种群用BBO算法寻优机制,一半种群用其他算法的寻优机制;这个就比较牛逼了,想想其他优化算法,那就多了去了。

(三) 奇思妙想

你有什么奇思妙想都可以加入;我当时在拿基准测试函数进行调试的时候,发现算法在最接近最优解的时候,收敛速度就下来了。越是接近最优解,迭代次数越多;或者说其实距离最优解已经很接近了,就是其中某一个或某几个变量和最优解相差一点点,可能就是一个粒度。这个问题很突出也很明显,我就想该如何在这上面做文章。后来学校组织上党课,我就拿了一本刘金琨的《先进PID控制MATLAB仿真(第二版)》;当我读到迭代学习那一章的时候,突然来了灵感。在迭代过程的后期,可以对当前最优解增加一个扰动,这个扰动多大呢,正负一个粒度。回去编程序实验一下,结果堪称完美。
每个人都可以采用不同的方法改进,或者这个灵感来自于一瞬间。一定要抓住,记下来并尝试一下。
另外一种改进思路就是换一个理论,当你对ACO、BBO、PSO、GA、GE、GP各种优化算法都理解了,就会发现所有基于群智能的优化算法本质上都是通过各种花样来增加新的解决方案,并从中选择最好的,采用迭代计算,使整体朝着最优的方向发展。无论是基于遗传学、免疫学、生物地理学、人文学还是随机理论,本质上都是随机的。只要你能自圆其说的用自己的一套理论来包装出一个算法,你就是牛逼的。

三、 关于验证

新的算法如何验证,原文中已经给我们提供了很好的思路。采用蒙特卡洛模拟。蒙特卡洛模拟其实就是随机测试实验;因为所有的群优化算法都有随机生成初始种群的操作,所以为了解决初始种群对算法的影响,进行N次随机模拟,看平均结果。
将该算法和另外的几种算法就几种标准测试函数进行寻优。模拟上百次,看看最优结果和平均结果,再看看所花费的时间,列个表搞定。

(一) 基准测试函数

基准测试函数Benchmark可以去百度文库里搜索,就是一些多维的数学函数。

(二) 其他优化算法

Ant colony optimization (ACO)
Biogeography-based optimization (BBO)
Differential evolution (DE)
Evolutionary strategy (ES)
Genetic algorithm (GA)
Probability-based incremental learning (PBIL)
Particle swarm optimization (PSO)
Stud genetic algorithm (SGA)

(三) 蒙特卡洛模拟

蒙特卡洛模拟(Monte Carlo Simulation)是一种基于概率论的统计学方法。在二战期间,美国数学家&计算机之父冯·诺伊曼和乌拉姆在原子弹研制中模拟裂变物质的中子随机扩散现象,就采用了这种统计方法。蒙特卡罗模拟因欧洲袖珍国家摩纳哥著名的赌场而得名。和**的本质一样蒙特卡洛模拟也是以概率为基础。通俗点讲,就是做无数次随机试验来统计结果。比如在一个圆里面有个正三角形,如何计算这个正三角形面积所占据的百分比。可以采用往里面随机扔豆子的实验。当扔的豆子数n足够多,把三角形中的豆子数m取出来,那么m/n*100%就是结果。

成文日期2019.04.28
详解生物地理学优化(BBO)算法(二)