和声搜索算法——个人解读

联系方式:860122112@qq.com

和声搜索算法(Harmony search, HS)是一种新兴的智能优化算法,通过反复调整记忆库中的解变量,使函数值随着迭代次数的增加不断收敛,从而来完成优化。算法概念简单、可调参数少、容易实现。

类似于模拟退火算法对物理退火的模拟、遗传算法对生物进化的模仿、以及粒子群优化算法对鸟群的模仿等,和声算法模拟了音乐演奏的原理,它是 2001 年韩国学者 Geem Z W 等人提出的一种新颖的智能优化算法。算法模拟了音乐创作中乐师们凭借自己的记忆,通过反复调整乐队中各乐器的音调, 最终达到一个美妙的和声状态的过程。
举个例子:
假设一个需要优化的函数 f(X) ,且 X={x1,x2,,xn}Rn 。那么,可以把 X 看成一个由n个成员组成的乐队,他们用不同的乐器演奏出来音乐 xi 的和声对应 X={x1,x2,,xn} f(X) 可以看成是对这组和声的评价,成员们根据评价不断调整自己演奏的 xi (搜索过程),直到评价达到要求。

一. 一般HS算法步骤

(1)定义问题和参数值
a. 假设一个最小化问题,即:
minf(X)X={x1,x2,,xn}Rn

b. 确定参数值

  • 和声记忆库的大小HMS:理解成和声种群的大小
  • 和声记忆库取值概率HMCR:从现有种群(HM和声库)中拿出一个和声的概率
  • 音调微调概率 PAR:对拿出的和声进行微调的概率
  • 音调微调带宽 BW:微调的幅度
  • 创作的次数 Tmax:调整(迭代)的次数

(2)初始化和声记忆库HMS
X 的解空间里随机生成 HMS 个和声(理解成种群)X1,X2,,XHMS放入和声记忆库,并记录对应的 f(X) ,和声库的形式为:

HM=X1X2XHMS=x11x21xHMS1x12x22xHMS2x1nx2nxHMSn|f(X1)|f(X2)|f(XHMS)

(3) 生成一个新的和声
[0,1] 之间产生一个随机数 r1 ,与HMCR进行比较

  • r1<HMCR ,从和声记忆库中随机拿出一个和声变量
  • 否则,从解空间随机生成一个和声变量
  • 由上得到一个和声变量,若这个和声变量是从和声库中得到的,就需要对这个和声变量进行微调,在[0,1]之间产生一个随机数 r2
  • r2<PAR ,根据微调带宽 BW 来对得到的和声变量进行调整,得到一个新的和声变量
  • 否则,不做任何调整

最后得到新的和声 Xnew

(4)更新和声记忆库
Xnew 进行评估,即 f(Xnew) ,若优于 HM 中的函数值最差的一个,即 f(Xnew)<f(Xworst) ,则将 Xnew 代替HM中函数值最差的和声 Xworst ;否则,不做修改。

(5)检查算法是否终止
重复步骤 (3)和 (4),直到创作(迭代)次数达到 Tmax 为止。

HS流程图:
这里写图片描述

算法
这里写图片描述

第11行的 UBj LBj 是变量 xj 的上界和下界,即确定解空间范围;最后一行的 NI 相当于前面提到的Tmax,即迭代次数。

二. 改进的HS算法(The improved harmony search (IHS) algorithm)

令PAR和BW能随迭代次数的变化而变化
这里写图片描述
初始化时先确定 PARmin,PARmax,BWmin,BWmax t 为当前迭代次数,可以看出越往后PAR BW 越小。

二. 全局最优HS算法(Global best harmony search (GHS) algorithm)

先直接看算法
这里写图片描述

相比一般的HS,算法只改了一行(图中红框)。 xB (对应上文是 XB )表示的是和声库HM当前最好的和声,也就是从 xB 中随机挑选一个变量 k 作为新和声的第j个变量。(注意 k 不一定等于j

二. 自适应全局最优HS算法(The self-adaptive GHS (SGHS) algorithm)
  • 变量生成规则修改:

    这里写图片描述

    相比GHS,SGHS的变量生成规则做了两处修改
    第一处修改意在增加变异,避免掉入局部最优解;第二处修改即把GHS对应行的 xB(k) 改成 xB(j) ,从HM中拿出的最好和声与当前要生成的变量在和声中的位置是相同的。因为如果像GHS那样,位置的不同有很大概率使新生成的和声 xnew 性能比 xB 糟糕。

  • 参数自适应
    在SGHS中,四个参数HMS, HMCR, PAR 和 BW,除了HMS是初始化后固定外,其他三个参数都是随迭代搜索而动态调整,其中HMCR和PAR为自适应调整。
    HMCR是从HM中选择一个和声的概率。 大的HMCR值有利于局部搜索,从而增加算法的收敛速度,而小的HMCR值增加了和声库的多样性。 通过广泛的模拟,Omran和Mahdavi提出,通常使用较大的HMCR值(即> = 0.9)更好。 PAR是从 xB 选择音调的调整率。 大的PAR值有利于将 xB 的信息传递到下一代,从而增强了算法在 xB 周围的局部开发能力,而小的PAR值使得新的和声向量能够通过扰乱和声库中相应维度的值, 从而扩大了搜索区域和增加和声库的多样性。 由于在搜索过程中局部利用和全局探索总是矛盾的,因此难以确定HMCR和PAR的值。
    在SGHS论文中,HCMR和PAR通过进入HM生成和声的历史记录而动态地调整适当的范围。假设HMCR(PAR)值服从均值HMCRm(PARm)为[0.9,1.0]([0.0,1.0])、标准差为0.01(0.05)的正态分布。最初,HMCRm(PARm)设定为0.98(0.9)。然后SGHS根据正态分布生成的HMCR(PAR)开始搜索。在迭代过程中,记录下 Xnew 成功替换HM中 Xworst 时所对应的HMCR(PAR)的值。在经过指定迭代次数 LP (论文设为100)之后,通过求在此期间记录的所有HMCR(PAR)值的均值来重新生成HMCRm(PARm)。随着新的均值和固定的标准差0.01(0.05),产生新的HMCR(PAR)并用于随后的迭代。重复上述步骤。因此,可以逐渐学习适当的HMCR(PAR),以适应特定问题和特定阶段的搜索。

BW的调整
这里写图片描述
NI 是需要迭代的总次数, t <script type="math/tex" id="MathJax-Element-52">t</script>是当前迭代次数。

SGHS算法:
这里写图片描述

博主之前做的是使用HS和SGHS优化FCMAC(模糊小脑神经网络),部分代码链接:
https://github.com/DajunZhou/SGHS-CMAC
参考文献
Pan Q K, Suganthan P N, Tasgetiren M F, et al. A self-adaptive global best harmony search algorithm for continuous optimization problems[J]. Applied Mathematics and Computation, 2010, 216(3): 830-848.

  • 22
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
引用:在Python环境中,我们可以使用pyHarmonySearch库进行HS算法的实现。但为了深入理解HS算法,我们将在这篇文章中,使用纯Python代码来实现HS算法。 引用:以上就是和声搜索(HS)全局优化算法的Python实现。在下一部分中,我们将讨论如何将此算法应用于具体的问题,并提供实例代码。 和声搜索算法是一种启发式全局搜索算法,近年来在许多组合优化问题中得到了成功应用。它在一些问题上展现出了比遗传算法、模拟退火算法和禁忌搜索更好的性能。 所以,和声搜索算法的Python实现可以通过使用pyHarmonySearch库或者通过编写纯Python代码来完成。在应用方面,可以将和声搜索算法应用于各种具体的问题,例如图像多级阈值分割等。具体实现和应用可以参考相关文献和代码示例。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [创新实践:以和声搜索(HS)全局优化算法的纯Python实现为例,理解元启发式搜索的艺术](https://blog.csdn.net/qq_38334677/article/details/131738561)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [MATLAB算法实战应用案例精讲-【智能优化算法和声搜索算法-HS(附MATLAB、Java和Python代码)](https://blog.csdn.net/qq_36130719/article/details/126699088)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值