和声搜索算法(Harmony Search, HS)是一种新兴的启发式全局搜索算法,是一种模拟音乐家即兴演奏过程的群体智能优化算法。这种算法由Zong Woo Geem等人在2001年提出,灵感来源于音乐家在寻找和声时的创造性思维过程。HS算法通过模拟音乐家演奏音乐时的选择过程来寻找问题的最优解。
一、基本原理
和声搜索算法受音乐创作过程中乐师们凭记忆反复调整乐器音调以达到和谐状态的启发。在音乐中,每个乐器代表一个设计变量,乐器的和声对应一个解向量,而和声的评价则相当于目标函数。和声搜索算法通过不断调整和改进一组解(和声)来找到问题的最优解。
在路径规划问题中,和声搜索算法可以将每个可能的路径看作一个和声,通过迭代搜索找到最优路径。
二、核心组件
(1)和声记忆库(Harmony Memory, HM):这是算法的核心数据结构,用于存储当前最优解集合。它类似于遗传算法中的种群,存储多个解向量,每个解向量代表一个可能的解决方案。
(2)和声记忆库的大小(Harmony Memory Size, HMS)是一个预定义的参数,指HM中和声的数量。
(3)和声记忆考虑率(Harmony Memory Considering Rate, HMCR):这个参数决定了在生成新的和弦(即新的解)时,从和声记忆库中选取值的概率。如果生成的随机数小于HMCR,则从HM中选取一个值;否则,随机生成一个新的值。HMCR的取值通常介于0和1之间,即HMCR∈[0,1]。
(4)音调调整率(Pitch Adjusting Rate, PAR):这个参数决定了从和声记忆库中选择的值是否需要进行微调。如果从和声记忆库中选择了某个值,并且生成的随机数小于PAR,则该值会进行微调。微调通常是通过添加一个小的随机扰动来实现的。PAR的取值也通常介于0和1之间,即PAR∈[0,1]。
(5)音调微调带宽(Bandwidth, bw):用于连续变量的微调,表示最大变化量。
(6)新解的生成:通过结合HMCR和PAR,HS算法生成新的和声,这些和声可能是对现有和声的复制、修改或完全随机生成的。
三、算法流程
1. 初始化:
算法开始时,HMS会被随机填充一组初始解。这些初始解通常是在问题的搜索空间内随机生成的。设置和声记忆库大小(HMS)、和声记忆库取值概率(HMCR)、音调微调概率(PAR)、音调微调带宽(bw)和最大迭代次数(Tmax)。
2. 迭代过程:
(1)以概率HMCR在HM内搜索新解,以概率1-HMCR在HM外变量可能值域中搜索。
(2)如果选择了HM中的和声,以概率PAR对新解产生局部扰动调整。如果没有选择HM中的和声,则随机生成一个新的和声。
对于每个决策变量的新值,可以通过以下方式生成:
- 以 HMCR的概率从和声记忆库中选择。
- 以 1−HMCR 的概率在变量的可行解空间中随机选择。
- 以 PAR的概率对选定的值进行微调: ,其中,rand 是一个在[0, 1]范围内的随机数。
(3)更新HM:判断新解目标函数值(新生成的和声)是否优于HM内的最差解,若是,则用新和声替换HM中最差的和声。
3.终止条件:
重复上述过程直到达到最大迭代次数或其他终止条件。
停止准则:算法迭代过程会一直持续,直到满足一定的停止条件。常用的停止条件包括达到预设的最大迭代次数、找到满意的解、适应度改进不再明显等。
图1 和声搜索算法流程图