lxh_zmh 发表于 2012-5-23 10:44

matlab遗传算法的疑惑 跪求(大哥大姐 南来本往的 谢谢关注)

   由于毕设需要,本人刚开始新学MATLAB,但是有个问题百思不得其解,明明是按照书上的代码打的,但是每次运行都不成功,跪求高手指点,好心人帮帮忙吧,万分感谢!!
书上的代码如下:


function =targetalloc(chrom)         %目标函数
=size(chrom);
%射击有利程度估计值
p=[.87 .52 .11 .78 .72 .69 .94 .72 .36 .28 .27 .74 .24 .78 .45;
   .87 .52 .11 .78 .72 .69 .94 .72 .36 .28 .27 .74 .24 .78 .45;
   .87 .52 .11 .78 .72 .69 .94 .72 .36 .28 .27 .74 .24 .78 .45;
   .87 .52 .11 .78 .72 .69 .94 .72 .36 .28 .27 .74 .24 .78 .45;
   .87 .52 .11 .78 .72 .69 .94 .72 .36 .28 .27 .74 .24 .78 .45;
   .87 .52 .11 .78 .72 .69 .94 .72 .36 .28 .27 .74 .24 .78 .45;
   .62 .87 .70 .22 .80 .42 .43 .90 .13 .95 .18 .19 .12 .61 .35;
   .48 .20 .42 .16 .43 .58 .69 .03 .34 .72 .15 .24 .29 .30 .75];
%威胁程度评估值
w=[.47 .97 .76 .62 .48 .77 .33 .74 .54 .65 .43 .35 .63 .66 .57];
for i=1:m
    for j=1:n
      chrom(i,j)=p(chrom(i,j),j);
    end
end
eval=chrom*w';


%定义遗传算法参数
NIND=40;                  %个体数目(Number of individuals)
MAXGEN=400;               %最大遗传代数(Maximum number of generations)
GGAP=0.9;                   %代沟(Generation gap)
trace=zeros(MAXGEN,2);      %遗传算法性能跟踪初始值
BaseV=crtbase(15,8);
Chrom=crtbp(NIND, BaseV)+ones(NIND,15);    %初始种群
gen=0;
ObjV=targetalloc(Chrom);                   %计算初始种群函数值
while gen<MAXGEN
    FitnV=ranking(-ObjV);                  %分配适应度值(Assign fitness values)
    SelCh=select('sus',Chrom,FitnV,GGAP);               %选择
    SelCh=recombin('xovsp',SelCh,0.7);                  %重组
    f=rep(,);
    SelCh=mutbga(SelCh, f);SelCh=fix(SelCh);            %变异
    ObjVSel=targetalloc(SelCh);                         %计算子代目标函数值
    =reins(Chrom,SelCh,1,1,ObjV,ObjVSel);   %重插入
    gen=gen+1;
    trace(gen,1)=max(ObjV);                           %遗传算法性能跟踪
    trace(gen,2)=sum(ObjV)/length(ObjV);
end
=max(ObjV);Chrom(I,:),Y                           %最优解及其目标函数值
plot(trace(:,1),'-.');hold on;
plot(trace(:,2));grid
legend('解的变化','种群均值的变化')


每次运行都会提示:
Error in ==> C:\遗传算法工具箱\《Matlab遗传算法工具箱及应用》源码\《Matlab遗传算法工具箱及应用》源码\GATBX\gatbx-example\GATBX\YJ2.M
On line 2==> =size(chrom);

lxh_zmh 发表于 2012-5-23 10:45

对啦 小弟用的版本是MATLAB 6.5

haomeng12 发表于 2012-5-23 17:25

回复 1 # lxh_zmh 的帖子

把目标函数单独存成一个M文件,运行下面的遗传算法代码

ChaChing 发表于 2012-5-24 00:26

没试, 怀疑中文的问题!?
or Ref: 呼叫函数的方式 http://forum.vibunion.com/thread-75501-1-1.html

lxh_zmh 发表于 2012-5-24 09:24

回复 3 # haomeng12 的帖子

恩,我的目标函数就是在M文件下运行的,但是总提示第二行错误,由于这个原因遗传算法代码会出现目标函数错误的提示,哥们,能帮我运行下吗,非常感谢,一直被这个问题困扰着!
页: [1]
查看完整版本: matlab遗传算法的疑惑 跪求(大哥大姐 南来本往的 谢谢关注)