数学建模社区-数学中国

标题: 求助:关于遗传算法的问题!!! [打印本页]

作者: 傻蛋天天    时间: 2012-11-7 21:10
标题: 求助:关于遗传算法的问题!!!
大家请看一下这个程序:3 \6 C& M: p1 S& J
clear ;clf 5 e3 P6 i; Z! y+ a" K  _
popsize=20; %群体大小
0 Z1 h4 z8 E- N+ _) I. xchromlength=10; %字符串长度(个体长度)
8 `* W0 n( y  S3 K$ k' I+ L; R) gpc=0.6; %交叉概率 * @/ j$ w. z5 h* F) |" S7 G
pm=0.001; %变异概率
. j2 N& {- x3 j3 p" Upop=initpop(popsize,chromlength); %随机产生初始群体
1 Y& E1 I6 ^+ q  }8 {9 m2 U3 efor i=1:20 %20为迭代次数
' k+ Q- N& k: s# R$ Z. ]' x- E[objvalue]=calobjvalue(pop); %计算目标函数 ; f7 \5 r: m$ l9 w) R* W: n
fitvalue=calfitvalue(objvalue); %计算群体中每个个体的适应度 + v! C- n0 i; o: h. `" }5 Z4 L" a
[newpop]=selection(pop,fitvalue); %复制 7 \0 F; i% O# W( M% v! {0 Q
[newpop]=crossover(pop,pc); %交叉 0 s; R6 ^. v% D8 o9 k
[newpop]=mutation(pop,pc); %变异 : U4 V+ M  C" I# B- i, j8 Q
[bestindividual,bestfit]=best(pop,fitvalue); %求出群体中适应值最大的个体及其适应值
' ~2 {4 \% }* J. H: ^, |y(i)=max(bestfit); 7 W1 |: l0 z& Q1 j* s# \
n(i)=i; 6 [4 {& h; p9 D
pop5=bestindividual; ) T2 `2 b5 f/ \  s9 `4 m1 i! V2 `- V
x(i)=decodechrom(pop5,1,chromlength)*10/1023;   f2 y2 a7 e3 V) F+ C) N
pop=newpop;
. ~& ]$ j) C+ ]- e- y  A$ Lend
! ~* [+ R6 ~" }: B; u) Hfplot('10*sin(5*x)+7*cos(4*x)',[0 10])
4 q- @6 _0 P4 }- A* l$ ^7 f% Mhold on
% |( L# ~) }6 j5 Bplot(x,y,'r*') 1 o' H! d$ n: U( _8 x5 R
hold off : ^* f) G( W! q: g7 A$ R1 {
%%%%%%%%%%%%8 ?. p! l2 J: H) Z+ Q+ t6 B
这是遗传算法的主程序。我想问的是:在进行复制、交叉、变异处理时,为什么不代入新的群体矩阵newpop,而使用旧的pop呢?如果按照原程序,那么复制、交叉处理岂不是没有了任何意义?
8 T5 t+ F& ~, @6 `$ {+ n 当我将pop改为newpop时,程序编译时就会出现错误!!!/ J$ d7 h, H6 Z
真搞不懂这到底是为什么,希望各位大侠不吝指教,谢谢!!!
% V  J7 E. G/ p/ }
+ D* r+ a' l; l8 M* Z- @, h' L




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5