优化算法笔记(二十六)和声搜索算法
(以下描述,均不是学术用语,仅供大家快乐的阅读)
和声搜索算法(Harmony Search)是受音乐中的和声启发而提出的启发式算法,其提出(发表)年份为2001年,算是一个比较老的算法了。和声搜索算法放在现在,其性能非常一般,不过它提出了一种领域搜索的具体实现方式,可以和不同的算法融合,提高其他算法的性能。
单独看一个和声意义不大,一个和声的一个维度会根据群体中该维度的所以取值来确定其领域范围,然后再进行领域搜索。
原算法受音乐启发,所以它所解决的目标问题也是离散的问题。
和声搜索算法中的一个个体被称为和声记忆(Harmony Memory,HM),群体中和声记忆的数量为N,每个和声记忆中的音数(维度)为D。每一维的取值范围为 。
原算法中每个维度的取值范围L是一组有序的离散的值,即在指定的变量值中选取一个作为和声记忆的值。
每个和声记忆每次迭代只能变为其领域的值。
和声算法中有两种操作:1.移动到领域,2.变异到领域
其概率分别为Harmony Memory Considering Rate(HMCR)和Pitch Adjusting Rate(PAR)。
其中HMCR取值约为0.95,PAR取值约为0.10。
可以看出该算法的步骤和数值参考了遗传算法,而且两者都是为了处理离散问题。
例子如下:
和声记忆的数量为3,维度为2,其中第1维的取值范围为{A,B,C,D,E,F,G},第2维的取值为{3,4,5,6}。
第1代,三个个体的取值如下
在计算第2代时,每个个体的每一维只能去到该维度的邻域的值。
个体1_2能取到的值为(A,3) (A,4) (B,3) (B,4)
个体2_2能取到的值为(F,4)(F,5)(F,6)(G,4)(G,5)(G,6)
个体3_2能取到的值为(C,3)(C,4)(C,5)(D,3)(D,4)(D,5)(E,3)(E,4)(E,5),
图中标出了这三个个体能够到达的邻域。
变异到邻域到操作也很简单,该操作是对标了遗传算法中的变异操作。
变异到邻域操作时,该维度不会变异到当前已有的值。
如个体1_1变异第1维,由于群体中第1维的取值为{A,D,G}故该维度只能取到{B,C,E,F}。
下图中标有颜色的块出了变异操作无法到达的位置,空白位置为变异操作能够到达的位置。(如果没有空白位置呢?概率非常小,毕竟个体位置远少于解空间位置,如果出现了,不变异或者随机一个位置都行)
迭代过后,如果新的位置更好,则保留该和声记忆,并去除最差的和声记忆。
最后文章给出了判断找到的解是否是最优解的判断函数
其中Hr=HMCR,Hi会在该维度找到更好值时随着迭代次数递增。该公式的作用主要是为了判断何时去结束算法程序,不过在之前我们都是使用的最大迭代次数来结束算法程序,所有好像没多大用处。
算法的流程也挺简单的:
和声搜索的原算法是根据音乐中和声概念提出的,音符是离散的,所有算法也是离散的,对标遗传算法用于处理离散解空间问题,那么如何修改和声搜索算法使其能处理连续数值问题呢?
最关键的点是如何处理“邻域”,在连续解空间上,很难定义出一个点的领域,而且每个维度上的取值数量也是无穷的。
为和声搜索算法定义邻域也有几种思路:
1 . 将所有的个体定义为该个体的邻域,即每次随机从群体中选择一个个体,该维度移动到所选中的个体处。
其中D,E,F分别为AB,AC,BC的中点,A,B,C三个和声记忆的邻域将由DEF这三个点及解空间边界决定,此时的邻域比思路2中的更小,也不会出现重叠部分。
当某一维度的两个领域值相等时,上述(二维)的邻域(面)将会退化成邻域(线),可能会导致该维度快速收敛到该值,故此时需要忽略重复值,将邻域重新展开(成为面)。
在连续算法中,当满足HCMR条件时,算法将根据上面的色块在邻域中随机选择一个值;当满足PAR条件时,由于无法剔除指定值,简单起见,直接移动到随机的和声记忆的该维度。
后续的实验由于是求解连续函数最值,故会选择上述连续算法中的三种思路来进行。
适应度函数 。
实验一 : 思路一
从图像可以看出,思路一的策略与遗传算法非常的相似,移动路线类似于十字架,最终也收敛到了正解附近。前期搜索主要靠邻域移动,后期移动则是靠变异。
从结果也可以看出与遗传算法的差距不大,算法不是很稳定,其策略是飞到相邻的和声记忆上,所以跨越度比较大,精度全靠变异。
实验二 : 思路二
从图像中可以看出,种群的搜索路径不在像实验一中那样直来直去的十字路径,收敛的速度也慢了不少,但是仍能在正解附近收敛。
从结果中可以看出,思路二的结果好了不少,同时也更加稳定(误,运气好,之前实验出现过不好的结果,没能重现)。该思路的邻域搜索面积会更大,且个体之间的邻域存在重叠部分,故会有可能收敛于不好的位置,不过概率也较小。
实验三 : 思路三
图像逐渐贪吃蛇化!前期的图像与思路一相似,后期的图像有点类似遗传算法,可能是邻域的面积逐渐缩小成了长条状所致,不过最终“贪吃蛇”还是吃到了食物。
结果可以看出,思路三的稳定性不太行,当全部个体收敛到了一点后会开始进行思路一的替换操作,但无论如何替换都是相同的值,难以找到更优的位置,于是会出现一个较差的结果。这里也可以增加范围随机来跳出局部最优。
和声搜索算法是根据和声乐理知识提出的算法。由于音符是离散的值,算法也对标了遗传算法,故原算法也是针对离散问题提出的。在解决连续性问题时,需要对其邻域概念进行扩展和修改,最终的效果与遗传算法相差不大。
在现在看来,和声搜索算法的效果属实一般,对于其的针对性研究也不太多,该算法主要提出了其不同于遗传算法的遍历解空间的方式。所以在很多论文中都能看到用和声搜索算法与其他算法融合来进行改进的例子。
与遗传算法相比,和声搜索算法的邻域概念,将遗传算法的基因由线扩展到了面上。这一点有点类似于SVM和卷积神经网络的关系,不过,遗传算法和和声搜索算法的差别并没有那么大,只是搜索方式不同罢了。
参考文献
Geem Z W , Kim J H , Loganathan G V . A New Heuristic Optimization Algorithm: Harmony Search[J]. Simulation, 2001, 2(2):60-68. 提取码:4udl
Omran M , Mahdavi M . Global-best harmony search[J]. Applied Mathematics and Computation, 2008, 198(2):643-656. 提取码:pk3s
以下指标纯属个人yy,仅供参考
目录
上一篇 优化算法笔记(二十五)飞蛾扑火算法
下一篇 优化算法笔记(二十七)蜉蝣算法
优化算法笔记(二十六)和声搜索算法
和声搜索算法,诞生于2001年的音乐灵感,是一个较为古老的启发式算法。尽管在当今其性能一般,但它提供了领域搜索的独特视角,常被用于增强其他算法的性能。算法的核心是将个体抽象为“和声记忆”,群体中的每个和声记忆由D个维度组成,每个维度的取值范围是根据群体内所有值确定的领域。原算法针对离散问题...
优化算法笔记(二十六)和声搜索算法
在现在看来,和声搜索算法的效果属实一般,对于其的针对性研究也不太多,该算法主要提出了其不同于遗传算法的遍历解空间的方式。所以在很多论文中都能看到用和声搜索算法与其他算法融合来进行改进的例子。 与遗传算法相比,和声搜索算法的邻域概念,将遗传算法的基因由线扩展到了面上。这一点有点类似于...
贪吃蛇用语?
优化算法笔记(二十七)蜉蝣算法其中L为随机数,取值范围应该是(0,1),xm为雄性蜉蝣,xf为雌性蜉蝣,可以看出产生的两个个体关于这对雌性的中心对称。该步骤为蜉蝣算法提供了全局搜索能力,并结合选择操作加快了算法的收敛速度。原算法受音乐启发,所以它所解决的目标问题也是离散的问题。和声搜索算法中的一...
优化算法笔记(二十七)蜉蝣算法
蜉蝣算法(mayfly optimization algorithm)是根据蜉蝣的飞行和繁衍行为提出的优化算法。该算法提出与2020年(论文接收在2019年),算是一个新算法。算法的流程和结构其实与蜉蝣的关系不大,可以看作是对粒子群的一个修改。 蜉蝣算法中群体分为雄性和雌性,雄性的行为与粒子群相似,通过全局最优和自身历史最优移动,而雌性则...
优化算法笔记(二十五)飞蛾扑火算法
optimization algorithm: A novel nature-inspired heuristic paradigm[J]. Knowledge-Based Systems, 2015, 89(NOV.):228-249.. 提取码:koy9 以下指标纯属个人yy,仅供参考 目录 上一篇 优化算法笔记(二十四)帝王蝶算法 下一篇 优化算法笔记(二十六)和声搜索算法 ...