声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1324|回复: 4

[混合编程] matlab遗传算法的疑惑 跪求(大哥大姐 南来本往的 谢谢关注)

[复制链接]
发表于 2012-5-23 10:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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


function [eval]=targetalloc(chrom)         %目标函数
[m,n]=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([1;8],[1,15]);
    SelCh=mutbga(SelCh, f);SelCh=fix(SelCh);            %变异
    ObjVSel=targetalloc(SelCh);                         %计算子代目标函数值
    [Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);   %重插入
    gen=gen+1;
    trace(gen,1)=max(ObjV);                             %遗传算法性能跟踪
    trace(gen,2)=sum(ObjV)/length(ObjV);
end
[Y, I]=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  ==> [m,n]=size(chrom);
回复
分享到:

使用道具 举报

 楼主| 发表于 2012-5-23 10:45 | 显示全部楼层
对啦 小弟用的版本是MATLAB 6.5
发表于 2012-5-23 17:25 | 显示全部楼层
回复 1 # lxh_zmh 的帖子

把目标函数单独存成一个M文件,运行下面的遗传算法代码
发表于 2012-5-24 00:26 | 显示全部楼层
没试, 怀疑中文的问题!?
or Ref: 呼叫函数的方式 http://forum.vibunion.com/thread-75501-1-1.html
 楼主| 发表于 2012-5-24 09:24 | 显示全部楼层
回复 3 # haomeng12 的帖子

恩,我的目标函数就是在M文件下运行的,但是总提示第二行错误,由于这个原因遗传算法代码会出现目标函数错误的提示,哥们,能帮我运行下吗,非常感谢,一直被这个问题困扰着!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-6-3 20:28 , Processed in 0.066898 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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