微粒群算法matlab实现代码.docx

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微粒群算法matlab实现代码

function out=pso(lb,ub,d,f,symb,m)w=0.98;%w_end=0.4;w_varyfor=0.75;c1=2;c2=2;k=0.45667;t=(ub-lb)/m;Vmax=abs(t/4);X=zeros(m,d);X=abs((ub-lb)*rand(m,d)+lb);p1=zeros(1,m);x=zeros(1:d);for j=1:m x(1:d)=X(j,1:d);?% disp(x); p1(j)=eval(f);% history??endif symb==?p2=min(p1);?p2=min(p1); end if symb==?p2=max(p1);?p2=max(p1); endv=zeros(m,d);v(:)=t/m;for s=1:100for i=1:m v(i,:)=k*((w-1/k)*v(i,:)+c1*rand(1).*(p1(i)-X(i,:))+c2*rand(1).*(p2-X(i,:))); X(i,:)=X(i,:)+v(i,:);?for j=1:d x(1:d)=X(i,j); p=eval(f); if symb==?if p=p1(j)?p1(j)=p;?end end if symb==?if p=p1(j)?p1(j)=p;?end end if abs(v(i,j))Vmax?if v(i,j)0?v(i,j)=Vmax;?else?v(i,j)=-1*Vmax;?end end?end?if symb==?if p2min(p1)?p2=min(p1);?end end if symb==?if p2max(p1)?p2=max(p1);?end endendendout=p2;% 微粒群算法的主要代码,这是小弟的努力结果:L有点次,输入时:pso(下限,上限,未知数个数,函数表达式,最值,微粒数)最值? 最大,?最小微粒数:表示精度,可能函数有多个峰值或峰谷,所以要从函数的不同个点一起开始计算!微粒群算法 java代码package Arithmetic;import java.util.*;public class Swarm_Itelligent {int POPSIZE =20;int DIMENSION = 2;float W =1.0f;float C1 = 1.8f;float C2 = 1.8f;float VMAX = 2f;float XMIN = -2.0f;float XMAX = 2.0f;float P[];float PBEST;Indi[] individual;Random r;public static void main(String []args){Swarm_Itelligent si = new Swarm_Itelligent();//si.run();}public Swarm_Itelligent(){P = new float[DIMENSION];individual = new Indi[POPSIZE];for (int i = 0; iPOPSIZE;i++)individual[i] = new Indi();r = new Random();this.initiate();this.printPop();//System.out.println(PBEST:+PBEST);this.run();}public void run(){int i,j,total=0;float sum = 0;for (j = 0; j 50;j++){initiate();for (i = 0;i500; i++){W = (float)(1.0 - i *0.6/499);if ((PBEST - 3.0) 0.0001){total++;sum = sum + i;break;}else{walk();globalbest(1);}}System.out.println(j+:+PBEST);}System.out.println(Total number is +total);System.out.println(Globle best is :+PBEST);System.out.println(Sum is +sum);System.out.println(Average is +(sum/total));}public void walk(){for(int k = 0;kPOPSIZE;k++){for(int t = 0;t DIMENSION;t++){individual[k].speed[t] = W * individual[k].speed[t] + C

文档评论(0)

ligennv1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档