热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【优化求解】一种非线性动态自适应惯性权重PSO算法(IPSO)Matlab代码

一种非线性动态自适应惯性权重PSO算法(IPSO)Matlab代码[1]王生亮,刘根友.一种非线性动态自适应惯性权重PSO算法[J].计算机仿真,2021,38(04):249-

一种非线性动态自适应惯性权重PSO算法(IPSO)Matlab代码

[1]王生亮,刘根友.一种非线性动态自适应惯性权重PSO算法[J].计算机仿真,2021,38(04):249-253+451.
在这里插入图片描述
在这里插入图片描述

部分代码:

function [gbest,gbestval,fitcount]= CLPSO_new_func(fhd,Max_Gen,Max_FES,Particle_Number,Dimension,VRmin,VRmax,varargin)
%[gbest,gbestval,fitcount]= CLPSO_new_func('f8',3500,200000,30,30,-5.12,5.12)
rand('state',sum(100*clock));
me=Max_Gen;
ps=Particle_Number;
D=Dimension;
cc=[1 1]; %acceleration constants
t=0:1/(ps-1):1;t=5.*t;
Pc=0.0+(0.5-0.0).*(exp(t)-exp(t(1)))./(exp(t(ps))-exp(t(1)));
% Pc=0.5.*ones(1,ps);
m=0.*ones(ps,1);
iwt=0.9-(1:me)*(0.7/me);
% iwt=0.729-(1:me)*(0.0/me);
cc=[1.49445 1.49445];
if length(VRmin)==1VRmin=repmat(VRmin,1,D);VRmax=repmat(VRmax,1,D);
end
mv=0.2*(VRmax-VRmin);
VRmin=repmat(VRmin,ps,1);
VRmax=repmat(VRmax,ps,1);
Vmin=repmat(-mv,ps,1);
Vmax=-Vmin;
pos=VRmin+(VRmax-VRmin).*rand(ps,D);for i=1:ps;e(i,1)=feval(fhd,pos(i,:),varargin{:});
endfitcount=ps;
vel=Vmin+2.*Vmax.*rand(ps,D);%initialize the velocity of the particles
pbest=pos;
pbestval=e; %initialize the pbest and the pbest's fitness value
[gbestval,gbestid]=min(pbestval);
gbest=pbest(gbestid,:);%initialize the gbest and the gbest's fitness value
gbestrep=repmat(gbest,ps,1);stay_num=zeros(ps,1);ai=zeros(ps,D);
f_pbest=1:ps;f_pbest=repmat(f_pbest',1,D);
for k&#61;1:psar&#61;randperm(D);ai(k,ar(1:m(k)))&#61;1;fi1&#61;ceil(ps*rand(1,D));fi2&#61;ceil(ps*rand(1,D));fi&#61;(pbestval(fi1)<pbestval(fi2))&#39;.*fi1&#43;(pbestval(fi1)>&#61;pbestval(fi2))&#39;.*fi2;bi&#61;ceil(rand(1,D)-1&#43;Pc(k));if bi&#61;&#61;zeros(1,D),rc&#61;randperm(D);bi(rc(1))&#61;1;endf_pbest(k,:)&#61;bi.*fi&#43;(1-bi).*f_pbest(k,:);
endstop_num&#61;0;
i&#61;1;while i<&#61;me&fitcount<&#61;Max_FESi&#61;i&#43;1;for k&#61;1:psif stay_num(k)>&#61;5% if round(i/10)&#61;&#61;i/10%|stay_num(k)>&#61;5stay_num(k)&#61;0;ai(k,:)&#61;zeros(1,D);f_pbest(k,:)&#61;k.*ones(1,D);ar&#61;randperm(D);ai(k,ar(1:m(k)))&#61;1;fi1&#61;ceil(ps*rand(1,D));fi2&#61;ceil(ps*rand(1,D));fi&#61;(pbestval(fi1)<pbestval(fi2))&#39;.*fi1&#43;(pbestval(fi1)>&#61;pbestval(fi2))&#39;.*fi2;bi&#61;ceil(rand(1,D)-1&#43;Pc(k));if bi&#61;&#61;zeros(1,D),rc&#61;randperm(D);bi(rc(1))&#61;1;endf_pbest(k,:)&#61;bi.*fi&#43;(1-bi).*f_pbest(k,:);endfor dimcnt&#61;1:Dpbest_f(k,dimcnt)&#61;pbest(f_pbest(k,dimcnt),dimcnt);endaa(k,:)&#61;cc(1).*(1-ai(k,:)).*rand(1,D).*(pbest_f(k,:)-pos(k,:))&#43;cc(2).*ai(k,:).*rand(1,D).*(gbestrep(k,:)-pos(k,:));%~~~~~~~~~~~~~~~~~~~~~~vel(k,:)&#61;iwt(i).*vel(k,:)&#43;aa(k,:);vel(k,:)&#61;(vel(k,:)>mv).*mv&#43;(vel(k,:)<&#61;mv).*vel(k,:);vel(k,:)&#61;(vel(k,:)<(-mv)).*(-mv)&#43;(vel(k,:)>&#61;(-mv)).*vel(k,:);pos(k,:)&#61;pos(k,:)&#43;vel(k,:);if (sum(pos(k,:)>VRmax(k,:))&#43;sum(pos(k,:)<VRmin(k,:)))&#61;&#61;0;e(k,1)&#61;feval(fhd,pos(k,:),varargin{:});fitcount&#61;fitcount&#43;1;tmp&#61;(pbestval(k)<&#61;e(k));if tmp&#61;&#61;1stay_num(k)&#61;stay_num(k)&#43;1;endtemp&#61;repmat(tmp,1,D);pbest(k,:)&#61;temp.*pbest(k,:)&#43;(1-temp).*pos(k,:);pbestval(k)&#61;tmp.*pbestval(k)&#43;(1-tmp).*e(k);%update the pbestif pbestval(k)<gbestvalgbest&#61;pbest(k,:);gbestval&#61;pbestval(k);gbestrep&#61;repmat(gbest,ps,1);%update the gbestendendend% if round(i/100)&#61;&#61;i/100% plot(pos(:,D-1),pos(:,D),&#39;b*&#39;);hold on;% for k&#61;1:floor(D/2)% plot(gbest(:,2*k-1),gbest(:,2*k),&#39;r*&#39;);% end% hold off% title([&#39;PSO: &#39;,num2str(i),&#39; generations, Gbestval&#61;&#39;,num2str(gbestval)]);% axis([VRmin(1,D-1),VRmax(1,D-1),VRmin(1,D),VRmax(1,D)])% drawnow% endif fitcount>&#61;Max_FESbreak;endif (i&#61;&#61;me)&(fitcount<Max_FES)i&#61;i-1;end
end
gbestval


推荐阅读
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 本文介绍了最长上升子序列问题的一个变种解法,通过记录拐点的位置,将问题拆分为左右两个LIS问题。详细讲解了算法的实现过程,并给出了相应的代码。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 本文讨论了一个数列求和问题,该数列按照一定规律生成。通过观察数列的规律,我们可以得出求解该问题的算法。具体算法为计算前n项i*f[i]的和,其中f[i]表示数列中有i个数字。根据参考的思路,我们可以将算法的时间复杂度控制在O(n),即计算到5e5即可满足1e9的要求。 ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
author-avatar
mobiledu2502936255
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有