楼主: freetiger
2123 3

关于粒子群算法的求助 [推广有奖]

  • 0关注
  • 0粉丝

已卖:8份资源

博士生

34%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
4.5000
学术水平
1 点
热心指数
1 点
信用等级
0 点
经验
2507 点
帖子
100
精华
0
在线时间
371 小时
注册时间
2011-1-17
最后登录
2024-1-10

楼主
freetiger 发表于 2015-2-12 21:34:57 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
摘自百度百科:粒子群算法,也称粒子群优化算法(Particle Swarm Optimization),缩写为 PSO, 是近年来发展起来的一种新的进化算法(Evolutionary Algorithm - EA)。PSO 算法属于进化算法的一种,和模拟退火算法相似,它也是从随机解出发,通过迭代寻找最优解,它也是通过适应度来评价解的品质,但它比遗传算法规则更为简单,它没有遗传算法的“交叉”(Crossover) 和“变异”(Mutation) 操作,它通过追随当前搜索到的最优值来寻找全局最优。这种算法以其实现容易、精度高、收敛快等优点引起了学术界的重视,并且在解决实际问题中展示了其优越性。粒子群算法是一种并行算法。
自话粒子群算法(超简单实例):http://blog.csdn.net/breezedust/article/details/12378519
粒子群算法解决函数优化问题:http://wenku.baidu.com/link?url=oa2yudalkxoYZzygfMdaUOWgxHA-w9hwa9-I-R2vbv_2EwZmfhNxC-D7Esc7c1K0CQRy_mh-li6_BZocDoZ26MixkqYk-L-rakSq1W7uFQu

粒子群算法在寻优方面思路简洁、效率极好,可惜在坛里很少有人提及。看了上述两篇文章,很想在sas里试试,无奈能力有限。
有哪位高手愿意写代码让大家学习一下吗?就用第一篇文章里的例子:求解y=-x*(x-1) [-2,2]上最大值


如果能参考第二篇文章写成宏的形式,那自然是极好的了

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:粒子群算法 粒子群 Evolutionary Optimization Evolution 粒子群 最优化 sas

沙发
freetiger 发表于 2015-2-13 23:14:12
按上文要求写了段代码,经过300余次迭代能找到y=-x*(x-1)在【-2,2】上的最优解:0.25作为新手,代码写的不堪入目,只图能起到抛砖引玉的作用。
  1. /*求解y=-x*(x-1) 在[-2,2]上最大值*/
  2. data test;
  3. input x0 x1  c1 c2 vmax v0 v1        w;
  4. cards;
  5.         -0.5        2.6                2        2         0.1        0.01        0.02        0.4
  6.         ;
  7. run;

  8. %macro Letsgo;
  9. data p;
  10. set test;
  11. retain pbest0 pbest1 gbest;
  12.         do i=0 to 5000;
  13.                 if i=0 then do;
  14.                         pbest0=-x0*(x0-1);
  15.                         pbest1=-x1*(x1-1);
  16.                         gbest_tmp=max(pbest0,pbest1);
  17.                         gbest=max(gbest_tmp,gbest);               
  18.                         output;
  19.                 end;
  20.                 else do;
  21.                         v0=w*v0+c1*RANUNI(1)*(pbest0-x0)+c2*RANUNI(1)*(gbest-x0);
  22.                         v1=w*v1+c1*RANUNI(1)*(pbest1-x1)+c2*RANUNI(1)*(gbest-x1);
  23.                         v0=min(v0,vmax);
  24.                         v0=max(-v0,-vmax);
  25.                         v1=min(v1,vmax);
  26.                         v1=max(-v1,-vmax);

  27.                         x0=x0+v0;
  28.                         x0=min(x0,2);
  29.                         x0=max(x0,-2);
  30.                         x1=x1+v1;
  31.                         x1=min(x1,2);
  32.                         x1=max(x1,-2);

  33.                         pbest0=-x0*(x0-1);
  34.                         pbest1=-x1*(x1-1);
  35.                         gbest_tmp=max(pbest0,pbest1);
  36.                         gbest=max(gbest_tmp,gbest);
  37.                         output;
  38.                 end;
  39.         end;
  40. run;
  41. %mend;
  42. %Letsgo;
复制代码


已有 1 人评分论坛币 收起 理由
admin_kefu + 100 热心帮助其他会员

总评分: 论坛币 + 100   查看全部评分

藤椅
woshixiong2000 发表于 2015-2-14 09:47:46
强人 啊 ,学习了

板凳
freetiger 发表于 2015-2-14 09:58:05
乱写的,有错。期待高手关注

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 17:50