24小时热门版块排行榜    

查看: 2078  |  回复: 5
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

一生快乐

新虫 (初入文坛)

[求助] matlab程序运行总是出现下面的错误,请各位高手指点一下,谢谢了!急 急急

NIND=40;               %个体数目
MAXGEN=500;        %最大遗传代数
NVAR=7;               %变量个数
GGAP=0.8;              %代沟
%创建区域描述器                                                        
FielDR=[0.01,0.01,0.01,0.01,0.01,0.01,0.01;0.9,0.9,0.9,0.9,0.9,0.9,0.9]
Chrom=crtrp(NIND,FielDR)%创建初始种群
A=Chrom(i,j);
for j=1:40;
sum(j)=0;
    for m=1:7;
           sum(j)=A(j,m)+sum(j);
     end;
end
for j=1:40
  for i=1:7
       Chrom(i,j)=A(i,j)/sun(j);
     end
end;
gen=0;                                   %代计数器
ObjV=objfun_1(Chrom)                   %计算初始种群个体的目标函数值        
while gen %min(ObjV)>250
    FitnV=ranking(ObjV)                  %分配适应度值
    SelCh=select('sus',Chrom,FitnV,GGAP)     %选择(随即遍历抽样)
    SelCh=recombin('xovsp',SelCh,0.7)        %重组(单点交叉)
    SelCh=mutbga(SelCh,FielDR)            %变异   
    ObjVSel=objfun_1(SelCh)               %子代函数值  
    [Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel)    %重插入
    gen=gen+1;
    [Y,I]=min(ObjV);                      %最优解,种群序号
    Y
  w=(Chrom(I,)                         %输出自变量值
end
w
该段程序 运行错误显示      Undefined function or method 'crtrp' for input arguments of type 'double'.



function f=objfun_1(w)
R51=[7.5   0.15    3.0    0.002   1.0     0.010   0.1
   12.80   0.13    0.65   2.73    3.60    0.07    2.92
   11.20   0.27    0.5    0.68    5.70    0.09    0.98
   13.20   0.44    0.3    2.18    5.30    0.08    2.78
   9.90    0.20    0.5    1.09    5.40    0.06    3.04
   11.70   0.31    0.35   0.55    5.70    0.15    3.57
   9.00    0.27    0.35   1.37    7.30    0.09    1.41
   10.70   0.43    0.35   3.82    7.40    0.14    2.70
   8.70    0.27    0.3    2.05    6.20    0.10    2.69
   11.60   0.47    0.2    1.91    9.50    0.22    2.21
   9.70    0.28    0.35   4.50    9.80    0.17    1.81
   9.90    0.39    0.3    3.69    7.60    0.18    2.23
   6.80    0.60    0.3    4.91    9.60    0.27    1.36
   6.00    0.35    0.65   7.10    11.80   0.16    1.40
   6.70    0.63    0.5    4.37    9.80    0.30    1.62
   14.00   1.55    0.5    9.56    8.30    0.22    2.99
   9.00    0.73    0.6    1.09    9.60    0.21    2.67
   10.90   0.50    0.65   12.01   9.20    0.28    2.02
   10.90   0.55    0.35   5.19    6.00    0.16    1.72
   8.10    0.78    0.5    8.19    8.90    0.22    2.12
   14.90   0.55    0.5    8.46    10.80   0.19    2.27
   11.30   0.24    0.35   5.46    6.60    0.15    1.01
   12.50   0.90    0.5    1.75    5.70    0.10    3.19
   9.60    0.49    0.35   3.28    8.00    0.14    1.85
   11.20   0.68    0.65   7.50    8.20    0.18    2.27];

A1=R51
sizes=size(A1)%统计行列数
row=sizes(1);
col=sizes(2);
[aa,b]=size(w);
%决策矩阵规范化
sum=0;
for j=1:7;
   for m=1:25;
            a=A1(m,j)*A1(m,j);
           sum=a+sum;
     end;
       b=sqrt(sum);
    for i=1:25
       R1(i,j)=A1(i,j)/b;
     end;
end;

%运用目标函数法确定权重系数

sumx=0;
x1(1:col)=0;
for mm=1:aa;
    sum=0;

for j=1:col
   for i=2:row
        xa(j)=(R1(i,j)-R1(1,j))^2; %每列中的每个元素与第一个元素的差取平方,即目标函数
        x1(j)=x1(j)+xa(j);%
    end
    sumx(j)=x1(j)*w(m,j)*w(m,j);%目标函数之和
    sum=sum+sumx(j);
end
f(mm,1)=sum
end
这段程序运行错误显示??? Input argument "w" is undefined.
回复此楼

» 本帖已获得的红花(最新10朵)

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wolfqfy

金虫 (正式写手)

【答案】应助回帖

jjdg: 建议直接给出答案,而不是其他论坛的链接 2011-10-16 23:37:58
白日放歌须纵酒,青春作伴好还乡。
4楼2011-10-16 09:06:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 6 个回答

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖


jjdg(金币+1): 感谢支持 2011-10-16 23:37:20
Undefined function or method 'crtrp' for input arguments of type 'double'.
crtrp函数未定义

Input argument "w" is undefined.
函数定义是function f=objfun_1(w),必须有参数调用,objfun_1()这样不行的
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
2楼2011-10-16 00:32:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

一生快乐

新虫 (初入文坛)

我的这个程序就是调用的objfun_1(w)那个程序
现在的问题就是想让w之和为1,也就是从A=Chrom(i,j);到
gen=0;  上一行的end这一段循环使得chrom里每行的7个数之和为1,共40行

NIND=40;               %个体数目
MAXGEN=500;        %最大遗传代数
NVAR=7;               %变量个数
GGAP=0.8;              %代沟
%创建区域描器                                                        
FielDR=[0.01,0.01,0.01,0.01,0.01,0.01,0.01;0.9,0.9,0.9,0.9,0.9,0.9,0.9]
Chrom=crtrp(NIND,FielDR);%创建初始种群
A=Chrom(i,j);
for j=1:40;
sum(j)=0;
    for m=1:7;
           sum(j)=A(j,m)+sum(j);
end;
end
for j=1:40
  for i=1:7
       Chrom(i,j)=A(i,j)/sum(j);
     end
end;
gen=0;                                   %代计数器
ObjV=objfun_1(Chrom);                 %计算初始种群个体的目标函数值        
while gen %min(ObjV)>250
    FitnV=ranking(ObjV);                  %分配适应度值
    SelCh=select('sus',Chrom,FitnV,GGAP);     %选择(随即遍历抽样)
    SelCh=recombin('xovsp',SelCh,0.7);        %重组(单点交叉)
    SelCh=mutbga(SelCh,FielDR);            %变异   
    ObjVSel=objfun_1(SelCh);               %子代函数值  
    [Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);    %重插入
    gen=gen+1;
    [Y,I]=min(ObjV);                      %最优解,种群序号
    Y
  w=(Chrom(I,)                         %输出自变量值
end
w
??? Subscript indices must either be real positive integers or logicals.

Error in ==> yichuansuanfa at 8
A=Chrom(i,j);
3楼2011-10-16 09:03:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

一生快乐

新虫 (初入文坛)

送鲜花一朵
谢谢了!现在不是crtrp的问题了,运行完显示的是下面的错误
??? Subscript indices must either be real positive integers or logicals.

Error in ==> yichuansuanfa at 8
A=Chrom(i,j);
如果去掉A=Chrom(i,j);到
gen=0上一行的end这一段循环就可以运行了,可是结果不准确
5楼2011-10-17 17:03:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见