- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
混合粒子群算法:基于杂交的算法
算法原理
借鉴遗传算法中杂交的概念,在每次迭代中,根据杂交率选取指定数量的粒子放入杂交池内,池内的粒子随机两两杂交,产生同样数目的子代粒子(),并用子代粒子代替亲代粒子()。子代位置由父代位置进行交叉得到:
或
其中,P是0到1之间的随机数。
子代的速度由下式计算:
或
算法步骤
基于自然选择的粒子群算法的基本步骤如下:
随机初始化种群中各微粒的位置和速度;
评价每个微粒的适应度,将当前各微子的位置和适应值存储在各微子的中,将所有的中适应最优个体的位置和适应值存储在中;
更新每个微粒的速度和位置;
对每个微粒,将其适应值与其经历过的最好位置作比较,如果较好,则将其作为当前的最好位置;
比较当前所有和的值,更新;
根据杂交概率选取指定数量的粒子放入杂交池中,池中的粒子随机两两杂交产生同样数目的子代粒子,子代的位置和速度计算公式如下:
。保持和不变;
若满足停止条件(通常为预设的运算精度或迭代次数),搜索停止,输出结果,否则返回(3)继续搜索。
算法MATLAB实现
在MATLAB中编程实现的基于杂交的粒子群算法优化函数为:。
功能:用基于杂交的粒子群算法求解无约束优化问题。
调用格式:
其中,:待优化的目标函数;
:粒子数目;
:学习因子1;
:学习因子2;
:惯性权重;
:杂交概率;
:杂交池的大小比例;
:最大迭代次数;
:自变量的个数;
:目标函数取最小值时的自变量值;
:目标函数的最小值。
基本粒子群算法的MATLAB代码如下:
function [xm,fv]=BreedPSO(fitness,N,c1,c2,w,Pc,Sp,M,D)
% fitness:待优化的目标函数;
% N:粒子数目;
% c1:学习因子1;
% c2:学习因子2;
% w:惯性权重;
% Pc:杂交概率;
% Sp:杂交池的大小比例;
% M:最大迭代次数;
% D:自变量的个数;
% xm:目标函数取最小值时的自变量值;
% fv:目标函数的最小值。
format long;
for i=1:N
for j=1:D
x(i,j)=randn; %随机初始化位置
v(i,j)=randn; %随机初始化速度
end
end
for i=1:N
p(i)=fitness(x(i,:));
y(i,:)=x(i,:);
end
pg=x(N,:); %pg为全局最优
for i=1:(N-1)
if fitness(x(i,:))fitness(pg)
pg=x(i,:);
end
end
for t=1:M
for i=1:N %速度、位移更新
v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:));
x(i,:)=x(i,:)+v(i,:);
if fitness(x(i,:))p(i)
p(i)=fitness(x(i,:));
y(i,:)=x(i,:);
end
if p(i)fitness(pg)
pg=y(i,:);
end
r1=rand();
if r1Pc %杂交概率
numPool=round(Sp*N); %杂交池大小
PoolX=x(1:numPool,:); %杂交池中粒子的位置
PoolVX=v(1:numPool,:); %杂交池中粒子的速度
for i=1:numPool
seed1=floor(rand()*(numPool-1))+1;
seed2=floor(rand()*(numPool-1))+1;
pb=rand();
%子代位置计算
childx1(i,:)=pb*PoolX(seed1,:)+(1-pb)*PoolX(seed2,:);
%子代速度计算
childv1(i,:)=(PoolVX(seed1,:)+PoolVX(seed2,
您可能关注的文档
- 惠州市 2017届高三惠州市模拟考试物理试题和参考答案.doc
- 惠州市2017届高三第一次模拟考试英语试卷及参考答案.doc
- 惠州市2019高三4月模拟考理综化学试题(含答案).doc
- 惠州市2019高三第一次调研考试.doc
- 惠州市2020届高三一模文科数学试题(含答案和解析)(2020年6月).doc
- 惠州市2020年重点建设项目计划(新开工).doc
- 惠州市教职员工健康卡.doc
- 惠州市科级干部任免备案表.doc
- 惠州市水口中心小学开展优秀童谣推广、传唱活动情况说明报告.doc
- 惠州市云企财税咨询有限公司.ppt
- 2025年无人机低空医疗物资投放社会效益报告.docx
- 2025年再生塑料行业包装回收利用产业链重构研究.docx
- 《AI眼镜周边产品市场机遇:2025年终端销售与需求增长洞察》.docx
- 2025年坚果加工行业深加工技术突破与市场拓展策略报告.docx
- 2025年通信芯片行业技术竞争与未来趋势报告.docx
- 《2025年生鲜电商配送冷链事故分析与预防措施》.docx
- 《商业航天融资新趋势2025民营卫星企业资本涌入估值分析市场动态》.docx
- 2025年能源绿色健康行业创新技术与市场应用报告.docx
- 2025年无人机低空医疗救援通信方案分析报告.docx
- 2025年烹饪机器人行业市场集中度分析报告.docx
原创力文档


文档评论(0)