数学建模社区-数学中国

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

作者: 傻蛋天天    时间: 2012-11-7 21:10
标题: 求助:关于遗传算法的问题!!!
大家请看一下这个程序:
+ W0 O, o/ w5 R6 ^7 w' f clear ;clf - ~( M( t3 P; E5 a* M
popsize=20; %群体大小
# a; B3 Y8 S. q3 Fchromlength=10; %字符串长度(个体长度)
0 H0 X8 c7 _) ~2 n5 N8 `! b4 ppc=0.6; %交叉概率
, g$ P2 T9 |+ q; j$ a' Lpm=0.001; %变异概率
& D* ~  n0 o5 A& b$ i" F9 Gpop=initpop(popsize,chromlength); %随机产生初始群体
+ b" G8 B0 |6 J! a, j! o2 gfor i=1:20 %20为迭代次数
5 T! u! _$ s8 Y7 \/ e[objvalue]=calobjvalue(pop); %计算目标函数
/ I& i4 e, j8 X( J( tfitvalue=calfitvalue(objvalue); %计算群体中每个个体的适应度 * ]2 Y% e; M# F) }& d* i4 s/ a7 J
[newpop]=selection(pop,fitvalue); %复制 . a1 P" q. y  W0 l) i: K
[newpop]=crossover(pop,pc); %交叉
. |0 _  Y( I* r' \3 _[newpop]=mutation(pop,pc); %变异
+ i2 M2 n1 @# ]" q$ M[bestindividual,bestfit]=best(pop,fitvalue); %求出群体中适应值最大的个体及其适应值 " g, a* }, h, s4 d- Q( [) Z
y(i)=max(bestfit);
& \# |: |1 Z; D. I3 U% Vn(i)=i;
3 N% {% Y3 d& j4 C" |. s; ?pop5=bestindividual;
1 ?) N7 j' d9 N' Lx(i)=decodechrom(pop5,1,chromlength)*10/1023; 7 O' A1 R  J6 ]- D4 R
pop=newpop; ; T8 B# S& n. |" }
end . J. [$ g# T0 I  ?9 i) ]
fplot('10*sin(5*x)+7*cos(4*x)',[0 10])
0 {# ]% m5 V4 K2 u6 vhold on
& [) p+ O7 L  F* ]3 h% n: g5 w' H. z4 t' `2 Lplot(x,y,'r*') ! V. S4 [6 c. U( J4 Q  C
hold off
" x9 p! }) `* u6 j) D4 T2 `%%%%%%%%%%%%( a4 k' h9 l1 v* N* P
这是遗传算法的主程序。我想问的是:在进行复制、交叉、变异处理时,为什么不代入新的群体矩阵newpop,而使用旧的pop呢?如果按照原程序,那么复制、交叉处理岂不是没有了任何意义?' r2 y4 ~) B9 @# e. G* Q6 ?7 K; I
当我将pop改为newpop时,程序编译时就会出现错误!!!/ ?" A. E& u  d; g
真搞不懂这到底是为什么,希望各位大侠不吝指教,谢谢!!!
$ K" \" B1 q' m3 U. _  P5 ] & i$ t# @$ @* ?) D





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