求助,一直没搞定的错误
错误提示:??? 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 的帖子
什么目录啊?你是说路径"'E:\遗传\ga.m (roulette)"?改了也一样的,不是这个原因.
[ 本帖最后由 joysi 于 2008-11-14 18:08 编辑 ] 好像是定义的函数picked就一个输出
你使用的时候用了两个
function picked=roulette(c_p)这句的输出改一下 试试
回复 地板 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]