声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2460|回复: 5

[编程技巧] 如何调试以下程序?

[复制链接]
发表于 2005-11-24 17:59 | 显示全部楼层 |阅读模式

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

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

x
源程序如下:
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([PRECI],[1,NVAR]);[1,1;4,2];rep([1;0;1;1],[1,NVAR])];
Chrom=crtbp(NIND,NVAR*PRECI);
v=bs2rv(Chrom,FieldD);
gen=1;
while gen<MAXGEN,
[NIND,N]=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=[SelCh1;SelCh2];
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 编辑 ]
回复
分享到:

使用道具 举报

发表于 2005-11-24 19:57 | 显示全部楼层

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

<FONT face="Times New Roman">
<P>这个什么程序,怎么乱其八糟的,遍地是错误,粗略的看了一下就不下10除了,没办法帮你改,重新写一个好了</P></FONT>
 楼主| 发表于 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>
发表于 2005-11-24 20:25 | 显示全部楼层

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

把用function f1 f2分别放到两个文件中去就行了
 楼主| 发表于 2005-11-24 20:37 | 显示全部楼层
麻烦详细解释一下,怎么操作?<BR>~~~拜托了·~感激不尽·
发表于 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>
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-21 01:33 , Processed in 0.067671 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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