qiuyoyo 发表于 2005-11-24 17:59

如何调试以下程序?

源程序如下:
function f1=f(x)
f1=x(:,1).*x(:,1)/4+x(:,2).*x(:,2);
function f2=f(x)
f2=x(:,1).*(1-x(:,2))+10;
NIND=100;
MAXGEN=50;
NVAR=2;
PRECI=20;
GGAP=0.9;
trace1[ ];trace2[ ];trace3[ ];
FieldD=,);;rep(,)];
Chrom=crtbp(NIND,NVAR*PRECI);
v=bs2rv(Chrom,FieldD);
gen=1;
while gen<MAXGEN,
=size(Chrom);
M=fix(NIND/2);
ObjV1=f1(v(1:M,:));
FitnV1=ranking(ObjV1);
SelCh1=select('sus',Chrom(1:M,:),FitnV1,GGAP);
ObjV2=f2(v(1:M,:));
FitnV2=ranking(ObjV2);
SelCh2=select('sus',Chrom(1:M,:),FitnV2,GGAP);
SelCh=;
SelCh=recombin('xovsp',SelCh,0.7);
Chrom=mut(SelCh);
v=bs2rv(Chrom,FieldD);
trace1(gen,1)=min(f1(v));
trace1(gen,2)=sum(f1(v))/length(f1(v));
trace2(gen,1)=min(f2(v))/length(f2(v));
trace2(gen,2)=sum(f2(v));
trace3(gen,1)=min(f1(v)+f2(v));
trace3(gen,2)=sum(f1(v))/length(f1(v))+sum(f2(v))/length(f2(v));
gen=gen+1;
end
figure(1);clf;
plot(trace1(:,1));hold on;plot(trace1(:,2),'-.');
plot(trace1(:,1),'.');plot(trace(:,2),'.');grid;
legend('解的变化','种群均值的变化')<
xlabel('迭代次数');ylabel('目标函数值');
figure(3);clf;
plot(trace3(:,1));hold on;
plot(trace3(:,2),'-.');
plot(trace3(:,1);'.');
plot(trace3(:,2),'.');grid;
legend('解的变化','种群均值的变化');
xlabel('迭代次数');ylabel('目标函数值');
figure(4);clf;plot(f1(v);hold on;
plot(f2(v),'r-.');grid;
运行出现错误:
??? function f1=f(x)
Error: Function definitions are not permitted at the prompt or in scripts.
期盼解答一下,如何排除错误·~谢谢了运行环境是m7

[ 本帖最后由 xinyuxf 于 2007-7-12 19:52 编辑 ]

linda 发表于 2005-11-24 19:57

回复:(qiuyoyo)跪求各位达人 帮忙解答一下(急!急...

<FONT face="Times New Roman">
<P>这个什么程序,怎么乱其八糟的,遍地是错误,粗略的看了一下就不下10除了,没办法帮你改,重新写一个好了</P></FONT>

qiuyoyo 发表于 2005-11-24 20:19

<DIV class=quote><B>以下是引用<I>alina</I>在2005-11-24 19:57:15的发言:</B><BR><FONT face="Times New Roman">
<P>这个什么程序,怎么乱其八糟的,遍地是错误,粗略的看了一下就不下10除了,没办法帮你改,重新写一个好了</P></FONT></DIV>
<P>不好意思,不是我写的~~<BR>你就给解释一下,为什么会出现这个错误就可以了啊,谢谢<BR>运行出现错误:<BR>??? function f1=f(x)<BR>Error: Function definitions are not permitted at the prompt or in scripts. <BR><BR></P>

linda 发表于 2005-11-24 20:25

回复:(qiuyoyo)以下是引用alina在2005-11-24 19:57...

把用function f1 f2分别放到两个文件中去就行了

qiuyoyo 发表于 2005-11-24 20:37

麻烦详细解释一下,怎么操作?<BR>~~~拜托了·~感激不尽·

linda 发表于 2005-11-25 15:19

回复:(qiuyoyo)跪求各位达人 帮忙解答一下(急!急...

<P>就是</P>
<P><FONT face="Times New Roman">function f1=f(x)
<br></FONT>
<p>
<P><FONT face="Times New Roman">f1=x(:,1).*x(:,1)/4+x(:,2).*x(:,2);<BR><BR>单独一个.m文件<BR><BR>同样f2也是单独的.m文件</FONT></P>
页: [1]
查看完整版本: 如何调试以下程序?