24小时热门版块排行榜    

CyRhmU.jpeg
南方科技大学公共卫生及应急管理学院2025级博士研究生招生报考通知
查看: 3318  |  回复: 14

小新爱小白

金虫 (小有名气)

引用回帖:
594464楼: Originally posted by lhfx_313 at 2011-04-11 20:32:11
应该分模块实现,一个主模块+几个子模块(每个子模块也就对应一个函数,也就是以 function开头)。
写一个main.m作为主模块,然后调用其他的各个子模块(调用各个子函数)就行了。
举个例子:实现两个数的相加和相 ...

Function [eval]=targetalloc (chrom)
[m,n]=size(chrom);
p=[87 52 11 78 72 69 94 72 36 28 27 74 24 78 45;87 52 11 78 72 69 94 72 36 28 27 74 24 78 45;87 52 11 78 72 69 94 72 36 28 27 74 24 78 45;87 52 11 78 72 69 94 72 36 28 27 74 24 78 45;87 52 11 78 72 69 94 72 36 28 27 74 24 78 45;87 52 11 78 72 69 94 72 36 28 27 74 24 78 45;62 87 70 22 80 42 43 90 13 95 18 19 12 61 35;48 20 42 16 43 58 69 03 34 72 15 24 29 30 75];
w=[47 97 76 62 48 77 33 74 54 65 43 35 63 66 57];
for i=1:m
for j=1:15
chrom(i,j)=p(chrom(i,j),j);
end;
end
eval=chrom*w';
NIND=40;
MAXGEN=50;
GGAP=0.9;
trace=zeros(MAXGEN,2);
BaseV=crtbase(15,8);
Chrom=crtbp(NIND,BaseV)+ones(NIND,15);
gen=0;
ObjV=taretalloc(Chrom);
while gen FitnV=ranking(-ObjV);
SelCh=select('sus',Chrom,FitnV,GGAP);
SelCh=recombin('xovsp',SelCh,0.7);
f=rep([1;8],[1,15]);
SelCh=mutbga(SelCh,f);SelCh=fix(SelCh);
ObjVSel=taretalloc(SelCh);
[Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);
gen=gen+1;
trace(gen,1)=max(ObjV);
trace(gen,2)=sum(ObjV)/length(ObjV);
end
[Y,I]=max(ObjV);Chrom(I,,Y
plot(trace(:,1),'-.');hold on;
plot(trace(:,2));grid
Legend('解的变化','种群均值的变化')
这个程序有什么问题,怎么总是提示错误,也运行不了呢?或者请指教怎么在Matlab 7.7.0(R2008b)里边具体步骤。
O(∩_∩)O谢谢
天天开心,事事顺利
11楼2012-08-11 20:05:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小新爱小白

金虫 (小有名气)

引用回帖:
946297楼: Originally posted by libralibra at 2011-04-19 00:41:55
互相调用2个办法:

==========
1.子函数
==========

都写在一个文件中,例如叫main.m

function main()
%主函数内容

subFunc1(); % 掉用子函数1

subFunc2(); % 掉用子函数2
end

function subFun ...

Function [eval]=targetalloc (chrom)
[m,n]=size(chrom);
p=[87 52 11 78 72 69 94 72 36 28 27 74 24 78 45;87 52 11 78 72 69 94 72 36 28 27 74 24 78 45;87 52 11 78 72 69 94 72 36 28 27 74 24 78 45;87 52 11 78 72 69 94 72 36 28 27 74 24 78 45;87 52 11 78 72 69 94 72 36 28 27 74 24 78 45;87 52 11 78 72 69 94 72 36 28 27 74 24 78 45;62 87 70 22 80 42 43 90 13 95 18 19 12 61 35;48 20 42 16 43 58 69 03 34 72 15 24 29 30 75];
w=[47 97 76 62 48 77 33 74 54 65 43 35 63 66 57];
for i=1:m
for j=1:15
chrom(i,j)=p(chrom(i,j),j);
end;
end
eval=chrom*w';
NIND=40;
MAXGEN=50;
GGAP=0.9;
trace=zeros(MAXGEN,2);
BaseV=crtbase(15,8);
Chrom=crtbp(NIND,BaseV)+ones(NIND,15);
gen=0;
ObjV=taretalloc(Chrom);
while gen FitnV=ranking(-ObjV);
SelCh=select('sus',Chrom,FitnV,GGAP);
SelCh=recombin('xovsp',SelCh,0.7);
f=rep([1;8],[1,15]);
SelCh=mutbga(SelCh,f);SelCh=fix(SelCh);
ObjVSel=taretalloc(SelCh);
[Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);
gen=gen+1;
trace(gen,1)=max(ObjV);
trace(gen,2)=sum(ObjV)/length(ObjV);
end
[Y,I]=max(ObjV);Chrom(I,,Y
plot(trace(:,1),'-.');hold on;
plot(trace(:,2));grid
Legend('解的变化','种群均值的变化')
这个程序有什么问题,怎么总是提示错误,也运行不了呢?或者请指教怎么在Matlab 7.7.0(R2008b)里边具体步骤。
O(∩_∩)O谢谢
天天开心,事事顺利
12楼2012-08-11 20:06:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

引用回帖:
1273373楼: Originally posted by 小新爱小白 at 2012-08-11 20:06:34
Function =targetalloc (chrom)
=size(chrom);
p=;
w=;
for i=1:m
for j=1:15
chrom(i,j)=p(chrom(i,j),j);
end;
end
eval=chrom*w';
NIND=40;
MAXGEN=50;
GGAP=0.9;
trace=zeros(MAXGEN,2);
BaseV= ...

贴出所有报错看看
debug要看bug信息才行
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
13楼2012-08-11 23:30:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liyw11

金虫 (小有名气)


小木虫: 金币+0.5, 给个红包,谢谢回帖
从模块化入手,就好了

[ 发自手机版 http://muchong.com/3g ]
不断追求
14楼2012-08-12 10:20:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

竹子kyle

铜虫 (正式写手)

和c里差不多
impossibleisnothing
15楼2012-09-07 15:55:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wenqiang1938 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见