声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 972|回复: 4

[编程技巧] 求助,一直没搞定的错误

[复制链接]
发表于 2008-11-14 14:58 | 显示全部楼层 |阅读模式

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

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

x
错误提示:
??? 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) %轮盘赌
[M,N]=size(c_p);
M=max([M N]);
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
回复
分享到:

使用道具 举报

发表于 2008-11-14 17:34 | 显示全部楼层
你的目录是中文的,将这个目录改成英文的看看。
 楼主| 发表于 2008-11-14 18:05 | 显示全部楼层

回复 沙发 zhoulon 的帖子

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

[ 本帖最后由 joysi 于 2008-11-14 18:08 编辑 ]
发表于 2008-11-14 18:29 | 显示全部楼层
好像是定义的函数picked就一个输出
你使用的时候用了两个
function picked=roulette(c_p)这句的输出改一下 试试
 楼主| 发表于 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) %轮盘赌
[M,N]=size(c_p);
M=max([M N]);
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 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-14 19:21 , Processed in 0.059462 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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