标题:遗传算法不解之处
只看楼主
逆水寒刘
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:76
专家分:117
注 册:2013-3-27
结帖率:90%
 问题点数:0 回复次数:1 
遗传算法不解之处
【问题】在-5<=Xi<=5,i=1,2区间内,求解
       f(x1,x2)=-20*exp(-0.2*sqrt(0.5*(x1.^2+x2.^2)))-exp(0.5*(cos(2*pi*x1)+cos(2*pi*x2)))+22.71282的最小值。
【分析】种群大小10,最大代数1000,变异率0.1,交叉率0.3
【程序清单】
   %源函数的matlab代码
      function [eval]=f(sol)
        numv=size(sol,2);
        x=sol(1:numv);
        eval=-20*exp(-0.2*sqrt(sum(x.^2)/numv)))-exp(sum(cos(2*pi*x))/numv)+22.71282;
  %适应度函数的matlab代码
      function [sol,eval]=fitness(sol,options)
        numv=size(sol,2)-1;
        x=sol(1:numv);
        eval=f(x);
        eval=-eval;
  %遗传算法的matlab代码
      bounds=ones(2,1)*[-5 5];
      [p,endPop,bestSols,trace]=ga(bounds,'fitness')
问题:就实例2而言,能否解释下为什么源函数代码中numv=size(sol,2)没有减1,而适应度函数减1了?不太明白sol的具体含义?还有就是ga中如何体现的分析中10,1000,0.1,0.3要求?谢谢各位指教,膜拜
搜索更多相关主题的帖子: function fitness matlab 
2015-11-15 22:57
逆水寒刘
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:76
专家分:117
注 册:2013-3-27
得分:0 
以下是引用逆水寒刘在2015-11-15 22:57:32的发言:

【问题】在-5<=Xi<=5,i=1,2区间内,求解
       f(x1,x2)=-20*exp(-0.2*sqrt(0.5*(x1.^2+x2.^2)))-exp(0.5*(cos(2*pi*x1)+cos(2*pi*x2)))+22.71282的最小值。
【分析】种群大小10,最大代数1000,变异率0.1,交叉率0.3
【程序清单】
   %源函数的matlab代码
      function [eval]=f(sol)
        numv=size(sol,2);
        x=sol(1:numv);
        eval=-20*exp(-0.2*sqrt(sum(x.^2)/numv)))-exp(sum(cos(2*pi*x))/numv)+22.71282;
  %适应度函数的matlab代码
      function [sol,eval]=fitness(sol,options)
        numv=size(sol,2)-1;
        x=sol(1:numv);
        eval=f(x);
        eval=-eval;
  %遗传算法的matlab代码
      bounds=ones(2,1)*[-5 5];
      [p,endPop,bestSols,trace]=ga(bounds,'fitness')
问题:就实例2而言,能否解释下为什么源函数代码中numv=size(sol,2)没有减1,而适应度函数减1了?不太明白sol的具体含义?还有就是ga中如何体现的分析中10,1000,0.1,0.3要求?谢谢各位指教,膜拜

上述例子是我在网上看到的经典范例,但是对于其中的变量实在难以理解,菜鸟一只。希望大神能答疑解惑不胜感激。
2015-11-16 10:05



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-459245-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.811358 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved