路径规划之启发式算法之十六:和声搜索算法(Harmony Search, HS)

news/2024/12/14 16:36:04/

        和声搜索算法(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中的和声,则随机生成一个新的和声。

        对于每个决策变量x_{i}的新值x_{new,i},可以通过以下方式生成:

  • 以 HMCR的概率从和声记忆库中选择。
  • 以 1−HMCR 的概率在变量的可行解空间中随机选择。
  • 以 PAR的概率对选定的值进行微调: ,其中,rand 是一个在[0, 1]范围内的随机数。

        (3)更新HM:判断新解目标函数值(新生成的和声)是否优于HM内的最差解,若是,则用新和声替换HM中最差的和声。

        3.终止条件:

        重复上述过程直到达到最大迭代次数或其他终止条件。

        停止准则:算法迭代过程会一直持续,直到满足一定的停止条件。常用的停止条件包括达到预设的最大迭代次数、找到满意的解、适应度改进不再明显等。

图1 和声搜索算法流程图


http://www.ppmy.cn/news/1555063.html

相关文章

nginx设置反向代理接口超时时间

在Nginx中设置反向代理接口超时时间,你需要使用proxy_read_timeout指令。这个指令定义了Nginx等待被代理服务器响应的最长时间。如果在这个时间内没有收到响应,Nginx将关闭连接。 以下是一个配置示例,其中设置了10秒的超时时间: …

3D 生成重建037-GAUSSIANANYTHING通过点云与外观的混合策略进行3dgs生成

3D 生成重建037-GAUSSIANANYTHING通过点云与外观的混合策略进行3dgs生成 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 虽然现有的三维内容生成方法取得了显著进展,但它们在生成高质量、易编辑且可控的三维模型方面仍然面临着挑战。现有的方法通常依赖于代…

【html网页页面010】html+css制作茶品牌文创网页制作含视频元素(7页面附效果及源码)

茶主题品牌文创网页制作 🥤1、写在前面🍧2、涉及知识🌳3、网页效果完整效果(7页):代码目录结构:page1、主页page2、精品包装page3、茶园一角page4、品牌地带page5、衍生品page6、联X我们page7、视频详情页 &#x1f30…

活动预告 |【Part1】Microsoft Azure 在线技术公开课:基础知识

课程介绍 参加“Azure 在线技术公开课:基础知识”活动,培养有助于创造新的技术可能性的技能并探索基础云概念。参加我们举办的本次免费培训活动,扩充自身的云模型和云服务类型知识。你还可以查看以计算、网络和存储为核心的 Azure 服务。 课…

《蓝桥杯比赛规划》

大家好啊!我是NiJiMingCheng 我的博客:NiJiMingCheng 这节课我们来分享蓝桥杯比赛规划,好的规划会给我们的学习带来良好的收益,废话少说接下来就让我们进入学习规划吧,加油哦!!! 一、…

SQL实现百分数转小数格式

MySQL 在MySQL中,可以使用CAST()函数将百分数转换为小数点格式。下面是一个示例: SELECT CAST(50% AS DECIMAL(4,2)) / 100;在上面的示例中,CAST(‘50%’ AS DECIMAL(4,2))将字符串’50%转换为DECIMAL类型,并指定小数点位数

C语言(指针基础练习)

删除数组中的元素 数组的元素在内存地址中是连续的&#xff0c;不能单独删除数组中的某个元素&#xff0c;只能覆盖。 #include <stdio.h> #include <stdbool.h>// 函数声明 int deleteElement(int arr[], int size, int element);int main() {int arr[] {1, 2, 3…

Next.js配置教程:构建自定义服务器

更多有关Next.js教程&#xff0c;请查阅&#xff1a; 【目录】Next.js 独立开发系列教程-CSDN博客 目录 前言 1. 什么是自定义服务器&#xff1f; 2. 配置自定义服务器 2.1 基础配置 2.2 集成不同的服务器框架 使用Fastify 使用Koa 3. 自定义服务器的高级功能 3.1 路…