带你走进和声搜索算法(Harmony search )的世界!
和声搜索算法的理论和应用
- 一、HS算法简介
- 二、HS算法的基本理论和应用
- 三、HS应用
一、HS算法简介
和声搜索(HS)算法首先由Geem等人在2001年提出,和其他元启发式算法一样,它受到音乐家即兴和声的基本原则的启发。该算法简单、搜索效率高。
已成功应用于函数优化、机械结构设计、管网优化和数据分类系统优化等领域。
二、HS算法的基本理论和应用
音乐家在谱写和声时,通常会尝试记忆存储中各种音调的可能组合。这种寻找完美和声的过程实际上类似于寻找工程问题的最优解的过程。HS方法实际上是受和声即兴创作的工作原理的启发。图1显示了基本HS方法的流程图,其中包括四个主要步骤。
算法流程:
步骤一:
初始化HS的内存(HM)。内存中包含考虑到的随机的解。对于一个N维问题,HM可以表示为:
[xi1,xi2,…,xin] (i=1,2,…,HMS)是一个候选解。HMS通常设定为50-100.
步骤二:
从内存中取出候选解进行改进[x’1,x’2,…,x’n]。利用和声内存率(HMCR)获取 xj’ 的每个组分。
HMCR定义为从HM中选取某个组分的概率。1-HMCR 是随机生成的概率。
如果xj’ 取自随机HM成员的第j 维度,可以根据PAR(Pitching Adjust Rate)进一步改变。
PAR决定着HM中需要改变的候选解的概率。
步骤三:
更新HM。评估步骤二获得解,如果产生的值优于最坏的解,就会替换掉最坏的解,否则,就消除这个解。
步骤四:
重复步骤2和步骤3直到预设终止标准,比如达到最大迭代次数。
三、HS应用
%%%实值和声搜索算法求函数极值%%%% 初始化
clear all; %清除所有变量
close all; %清图
clc; %清屏
HMS=3; %和声库的大小
HMCR=0.95; %记忆库取值概率
PAR=0.1; %微调概率
bw=1; %音调微调带宽
Tmax=200; %创作的次数
M=3; %乐器(变量)个数
Mmin=[-5 -5 -5]; %乐器的音调下限
Mmax=[5 5 5]; %乐器的音调上限% 和声记忆库初始化
X=zeros(HMS,M);
% 随机产生和声记忆库
for i=1:HMSfor j=1:MX(i,j)=rand()*(Mmax(j)-Mmin(j))+Mmin(j);end
end% 初始化新的乐器组合
xnew=zeros(1,M);
% 初始化最优解为第一个乐器组合
yBest=func(X(1,:));
xBest=X(1,:);% 迭代周期为Tmax
for iter=1:Tmaxiter;% 以概率HMCR在和声库中随机选取if rand()<HMCRxnew=X(round(rand()*(HMS-1))+1,:);% 以概率1-HMCR在乐器音调范围内随机产生elsefor j=1:Mxnew(j)=rand()*(Mmax(j)-Mmin(j))+Mmin(j);endend% 以概率PAR进行扰动if rand()<PARfor j=1:Mxnew(j)=xnew(j)+2*bw*rand()-bw;endend% 计算新乐器组合的和声为ynewynew=func(xnew);% 更新和声库,判断新解是否比和声库中最差的解更好,是则替换for j=1:HMSif ynew<func(X(j,:))X(j,:)=xnew;break;end% 记录最美的和声if yBest>func(X(j,:))yBest=func(X(j,:)); xBest=X(j,:);endend% 记录每个周期的最美和声trace(iter)=yBest;tracef(iter,:)=xBest;
end% 绘制结果
xBest %最好和声组合
trace(end) %最好和声
figure
plot(trace)
xlabel('迭代次数')
ylabel('目标函数值')
title('适应度进化曲线')
由图像可以看出,和声搜索可以较快收敛到最优解3附近。
原文参考:
https://www.hindawi.com/journals/cin/2015/258491/
加深理解
代码参考链接
带你走进和声搜索算法(Harmony search )的世界!相关推荐
- 图论的灵魂——带你走进迪杰斯特拉算法的世界
你好,我是小黄,一名独角兽企业的Java开发工程师. 感谢茫茫人海中我们能够相遇, 俗话说:当你的才华和能力,不足以支撑你的梦想的时候,请静下心来学习 希望优秀的你可以和我一起学习,一起努力,实现属于 ...
- 倒计时5天|科技与设计交融!9月2-4日,SSOT带你走进有温度的智慧办公世界!
获业界支持,2019年SSOT顺利起航,展会成功推出了一系列智慧办公.商业地产及办公空间领域的智能化解决方案及空间管理技术高端活动.SSOT将在9月2至4日于上海新国际博览中心举办,展望2020,继续 ...
- 带您走进松本行弘的程序世界
编者按: 在此书上市之前,特别对此书做一下方向说明,<松本行弘的程序世界>适合各层次程序设计人员和编程爱好者,也可以供相关技术人员参考. 本书的目的不是深入讲解哪种特定的技术,也没有全面讨 ...
- 带你走进神奇的元宇宙的世界
- 思维导图,带你走进《西游记》人物的世界
<西游记>是中国古代第一部浪漫主义章回体长篇神魔小说.该书以"唐僧取经"这一历史事件为蓝本,通过作者的艺术加工,深刻地描绘了当时的社会现实.主要描写了孙悟空出世,后遇见 ...
- 带你走进逐浪新宋体的世界
作者:Q葩小玉 浏览次数:5494 17/03/15 08:32 互联网上的每一个字体都源于创作者的辛勤创作和IT从业者的劳动结晶. 逐浪新宋体打造着一种独特的风范,是一款用于广告海报设计方面的字体, ...
- 和声搜索算法——个人解读
联系方式:860122112@qq.com 和声搜索算法(Harmony search, HS)是一种新兴的智能优化算法,通过反复调整记忆库中的解变量,使函数值随着迭代次数的增加不断收敛,从而来完成优 ...
- agd插值算法_多目标自适应和声搜索算法
[实例简介] 提出了一种利用Pareto支配来求解多目标优化问题的自适应和声搜索算法(MOSAHS).该算法利用外部种群来保存非支配解,为了保持非支配解的多样性,提出了一种基于拥挤度的删除策略,这个策 ...
- 带你走进T-Pot多蜜罐平台革命:简述、安装、使用、优化、更新
带你走进T-Pot:多蜜罐平台革命 T-Pot 19.03 T-Pot 19.03 runs on Debian (Sid), is based heavily on docker, docker-c ...
最新文章
- Windows Phone 7 位图编程
- HighNewTech:低代码(0代码/无代码,无需代码)开发的简介以及如何选择最合适的低代码开发工具
- php 策略模式实现原理,php 策略模式原理与应用深入理解
- 学习笔记(二)——直方图均衡化和匹配
- iphone版 天行skyline_Skyline QT
- 写论文必须养成的十大良好写作习惯
- 2021-11-01 Excel之九九乘法表
- tensorflow之add_n
- Spark函数讲解: combineByKey
- JavaScript---BOM和DOM
- 挖掘数百万参与的IMVU用户
- 【数学分析】集合 ① ( 集合概念 | 集合表示 | 常用的数集合 | 集合的表示 )
- 新晋流量操盘手(一行) 探索百度贴吧高阶引流玩法
- 在Visual Basic6.0中,如何实现简单加减乘除的程序编写?
- 西门子300 PLC 功能块及背景数据块的说明
- Burp Suite之Scaner模块(三)
- 编译原理词法分析中的有限自动机
- a|b 到底是谁整除谁
- IFTTT实现新浪微博完美同步Twitter
- 为什么这些UI设计很糟糕?什么是好的UI设计?
热门文章
- 作者:王志强(1975-),男,中国标准化研究院高新技术与信息标准化研究所副研究员、副所长。...
- 作者:朱扬勇(1963-),男,博士,复旦大学计算机科学技术学院教授、学术委员会主任,上海市数据科学重点实验室主任。...
- 【Git】GitHub同名项目实现丰富多彩的README.md
- 【操作系统】进程调度的不同层次
- 【JavaScript】百度地图API快速上手
- 【数据结构与算法】左式堆的Java实现
- 【Python】IDLE工具
- table固定表头滚动
- 大牛带你深入解读HashMap
- MongoDB的查询语法和SQL的SELECT语法做对比