matlab中粒子群算法基础(-)

http://cn.mathworks.com/help/gads/examples/optimize-using-a-particle-swarm.html


算法描述:n个粒子在Q维(变量个数)空间进行搜索,每个粒子表示为xi=(xi1,xi2,xi3,xi4,xi5.......),对应的速度Vi=(vi1,vi2,vi3,vi4,vi5...),搜索时考虑两个因素:1自己历史最大值2全部粒子最优值

速度由3个因素改变;1惯性权重,2自身权重3种群权重

可以通过plotobjective(@..,rang)画出函数图像。

对于复杂的目标函数可能使用默认设置会找不到最优值。

可进行一些自定义设置;

1绑定搜索空间

 设置 lb=-10*ones(1,nvars);其中nvars为变量个数

       ub=-lb;

[x,Fval.exitFlag,output]=particleswarm(fun,nvars,lb,ub);

2.更待其他选项

options=optimoptions('particleswarm','MinNeighborsFraction'1);

[x,Fval.exitFlag,output]=particleswarm(fun,nvars,lb,ub,options);

3.更改自身权重

options.SelfAdjustmentWeight=1.9;

[x,Fval.exitFlag,output]=particleswarm(fun,nvars,lb,ub,options);

4 也可以提供初始点(并不是必须的)

 x0=zeros(20,6)这里设置20个粒子作为行向量,6为变量值nvars

options.InitialSwarmMatrix=x0;

[x,Fval.exitFlag,output]=particleswarm(fun,nvars,lb,ub,options);

5矢量化速度(可以使计算时间缩短)

开启矢量化:options.UseVectorized=true;

关闭矢量化:options.UseVectorized=false;

另外计算程序运行时间可以用tic......toc中间是程序代码,tic和toc一般成对使用来计算时间间隔。

6.设置粒子数

默认是60,也可以自定义设置options.SwarmSize=200;

7.混合函数

指的是在粒子群算法停止后进行的计算,比如options.HybridFcn=@fmincon,这样可能会使结果更准确。








  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值