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); 对啦 小弟用的版本是MATLAB 6.5 回复 1 # lxh_zmh 的帖子
把目标函数单独存成一个M文件,运行下面的遗传算法代码 没试, 怀疑中文的问题!?
or Ref: 呼叫函数的方式 http://forum.vibunion.com/thread-75501-1-1.html
回复 3 # haomeng12 的帖子
恩,我的目标函数就是在M文件下运行的,但是总提示第二行错误,由于这个原因遗传算法代码会出现目标函数错误的提示,哥们,能帮我运行下吗,非常感谢,一直被这个问题困扰着!
页:
[1]