joysi 发表于 2008-11-14 14:58

求助,一直没搞定的错误

错误提示:
??? One or more output arguments not assigned during call to 'E:\遗传\ga.m (roulette)'.
Error in ==> ga>choose at 105
    picked(cn,1)=roulette(c_p); %轮盘赌
Error in ==> ga at 28
    picked=choose(popus,fitness);   %选择
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
改了很多遍,总是找不出错在哪?请各位大侠帮忙看下,不胜感激.
p=f_std./fitsum;               %选择概率                                    
c_p=cumsum(p)';               %累积概率,是一个矢量
for cn=1:choose_N   
    picked(cn,1)=roulette(c_p); %轮盘赌
    picked(cn,2)=roulette(c_p); %轮盘赌
   % popus=intercross(popus,picked(cn,:));%杂交
end
%popus=aberrance(popus,picked);%变异
return;

function picked=roulette(c_p) %轮盘赌
=size(c_p);
M=max();
U=rand;
for m=1:(M-1)
    if U<c_p(1)
    picked=1;
    return;
    elseif U>c_p(m) & U<c_p(m+1)
      picked=m+1;
      break;
    end
end

zhoulon 发表于 2008-11-14 17:34

你的目录是中文的,将这个目录改成英文的看看。

joysi 发表于 2008-11-14 18:05

回复 沙发 zhoulon 的帖子

什么目录啊?你是说路径"'E:\遗传\ga.m (roulette)"?
改了也一样的,不是这个原因.

[ 本帖最后由 joysi 于 2008-11-14 18:08 编辑 ]

majunlei1984 发表于 2008-11-14 18:29

好像是定义的函数picked就一个输出
你使用的时候用了两个
function picked=roulette(c_p)这句的输出改一下 试试

joysi 发表于 2008-11-17 09:55

回复 地板 majunlei1984 的帖子

是指这个地方出错了吗?
picked(cn,1)=roulette(c_p); %轮盘赌
picked(cn,2)=roulette(c_p); %轮盘赌
function picked=roulette(c_p) %轮盘赌
roulette函数的输出为picked,调用roulette函数时的输出为picked(cn,1).
改过之后仍然出现相同错误.
One or more output arguments not assigned during call to 'E:\GA\ga.m (roulette)'.
Error in ==> ga>choose at 105
    picked1=roulette(c_p);
Error in ==> ga at 28
    picked=choose(popus,fitness);   %选择

修改的程序段:
for cn=1:choose_N
    picked1=roulette(c_p);
    picked(cn,1)=picked1; %轮盘赌
    picked2=roulette(c_p);
    picked(cn,2)=picked2; %轮盘赌

function picked=roulette(c_p) %轮盘赌
=size(c_p);
M=max();
U=rand;
for m=1:(M-1)
    if U<c_p(1)
    picked=1;
    return;
    elseif U>c_p(m) & U<c_p(m+1)
      picked=m+1;
      break;
    end
end

[ 本帖最后由 joysi 于 2008-11-17 10:01 编辑 ]
页: [1]
查看完整版本: 求助,一直没搞定的错误