Hello Mat

 找回密码
 立即注册
查看: 13383|回复: 15

12万有引力定律算法函数优化--视频分享

[复制链接]

1294

主题

1520

帖子

110

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22633
发表于 2017-1-20 19:55:44 | 显示全部楼层 |阅读模式
12万有引力定律算法函数优化--视频分享
链接:http://pan.baidu.com/s/1o8HIehW 密码:0bnz

具体链接在halcom.cn论坛,联系人QQ:3283892722
该论坛是一个学习交流平台,我会逐一的和大家分享学习。
欢迎大家录制视频,并提交给我,我来设置视频,你可在论坛进行打赏分享。
视频专用播放器:http://halcom.cn/forum.php?mod=viewthread&tid=258&extra=page%3D1
具体的代码如下:
  1. clc,clear,close all
  2. warning off
  3. format longG
  4. % 万有引力定律算法
  5. % GSA 参数
  6. G0 = 100;
  7. a = 20;
  8. Vmin = -1;
  9. Vmax = 1;
  10. maxiter = 200;  % 迭代次数
  11. sizepop = 20;  % 种群数量
  12. popmin1 = -1;  popmax1 = 1; % x1
  13. popmin2 = -1;  popmax2 = 1; % x2
  14. % 初始化种群
  15. for i=1:sizepop
  16.     x1 = popmin1 + (popmax1-popmin1)*rand;
  17.     x2 = popmin2 + (popmax2-popmin2)*rand;
  18.     pop(i,1) = x1;
  19.     pop(i,2) = x2;
  20.     fitness(i) = fun([x1,x2]);
  21. end
  22. % 记录一组最优值
  23. [bestfitness,bestindex]=min(fitness);
  24. zbest=pop(bestindex,:);   % 全局最佳
  25. gbest=pop;                % 个体最佳
  26. fitnessgbest=fitness;     % 个体最佳适应度值
  27. fitnesszbest=bestfitness; % 全局最佳适应度值
  28. V = [0,0];
  29. % 迭代寻优
  30. for i=1:maxiter
  31.    
  32.     Gt = G0*exp(-a*i/maxiter);        % 万有引力定律常数
  33.    
  34.     [mfitness,index] = sort(fitness); % 从小到大排序
  35.     for j=1:sizepop
  36.         mt(j) = (fitness(j)-mfitness(end))./(mfitness(1)-mfitness(end)+eps);
  37.     end
  38.    
  39.     for j=1:sizepop
  40.         Mt = abs(mt(j))./sum(abs(mt))+eps;
  41.         Rij = norm( pop(j,:)-gbest(j,:) ) +eps;
  42.         Fij = rand(1,2).*( Gt*Mt*Mt/(Rij+eps) .*(pop(j,:)-gbest(j,:)+eps ) );
  43.         Va = Fij./Mt;
  44.         
  45.         % 速度更新
  46.         V = rand(1,2).*V - Va;
  47.         % V--x1
  48.         if V(1,1)>Vmax
  49.             V(1,1)=Vmax;
  50.         end
  51.         if V(1,1)<Vmin
  52.             V(1,1)=Vmin;
  53.         end
  54.         % V--x2
  55.         if V(1,2)>Vmax
  56.             V(1,2)=Vmax;
  57.         end
  58.         if V(1,2)<Vmin
  59.             V(1,2)=Vmin;
  60.         end
  61.         
  62.         % 位置更新
  63.         pop(j,:) = pop(j,:) + V;
  64.         % x1  越界限制
  65.         if pop(j,1)>popmax1
  66.             pop(j,1)=popmax1;
  67.         end
  68.         if pop(j,1)<popmin1
  69.             pop(j,1)=popmin1;
  70.         end
  71.         % x2  越界限制
  72.         if pop(j,2)>popmax2
  73.             pop(j,2)=popmax2;
  74.         end
  75.         if pop(j,2)<popmin2
  76.             pop(j,2)=popmin2;
  77.         end
  78.         
  79.         % 适应度更新
  80.         fitness(j) = fun(pop(j,:));
  81.         
  82.         % 比较  个体间比较
  83.         if fitness(j)<fitnessgbest(j)
  84.             fitnessgbest(j) = fitness(j);
  85.             gbest(j,:) = pop(j,:);
  86.         end
  87.         if fitness(j)<bestfitness
  88.             bestfitness = fitness(j);
  89.             zbest =  pop(j,:);
  90.         end
  91.     end
  92.     fitness_iter(i) = bestfitness;
  93. end
  94. disp('最优解')
  95. disp(zbest)
  96. fprintf('\n')

  97. figure('color',[1,1,1])
  98. plot(fitness_iter,'ro-','linewidth',2)

  99. figure('color',[1,1,1])
  100. loglog(fitness_iter,'ro-','linewidth',2)
  101. axis tight
  102. grid on
复制代码







算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复

使用道具 举报

0

主题

2

帖子

4

金钱

新手上路

Rank: 1

积分
6
发表于 2017-2-10 22:00:33 来自手机 | 显示全部楼层
多谢楼主多谢多谢
回复 支持 反对

使用道具 举报

0

主题

50

帖子

0

金钱

注册会员

Rank: 2

积分
50
发表于 2017-3-23 00:47:37 | 显示全部楼层
没注意到还有这个算法,学习。
回复 支持 反对

使用道具 举报

0

主题

59

帖子

1

金钱

注册会员

Rank: 2

积分
72
发表于 2017-5-2 14:56:39 | 显示全部楼层
感谢群主,谢谢
回复 支持 反对

使用道具 举报

0

主题

33

帖子

1

金钱

新手上路

Rank: 1

积分
37
发表于 2017-5-8 11:28:53 | 显示全部楼层

多谢楼主多谢多谢
回复 支持 反对

使用道具 举报

0

主题

4

帖子

6

金钱

新手上路

Rank: 1

积分
10
发表于 2017-5-26 16:32:58 | 显示全部楼层
谢谢楼主,非常好的讲解
回复 支持 反对

使用道具 举报

0

主题

1

帖子

3

金钱

新手上路

Rank: 1

积分
4
发表于 2017-5-29 14:28:50 | 显示全部楼层
我想知道密码
回复 支持 反对

使用道具 举报

0

主题

1

帖子

5

金钱

新手上路

Rank: 1

积分
6
发表于 2017-6-6 21:59:14 | 显示全部楼层
学习一下代码实现,谢谢分享。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

5

金钱

新手上路

Rank: 1

积分
6
发表于 2017-7-8 10:09:23 | 显示全部楼层
万有引力算法,想学习一下
回复 支持 反对

使用道具 举报

3

主题

28

帖子

1

金钱

新手上路

Rank: 1

积分
29
发表于 2017-7-14 16:37:23 | 显示全部楼层
谢谢余少,辛苦了。强力顶
回复 支持 反对

使用道具 举报

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

本版积分规则

Python|Opencv|MATLAB|Halcom.cn ( 蜀ICP备16027072号 )

GMT+8, 2024-4-28 06:42 , Processed in 0.215759 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表