数学建模社区-数学中国

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

作者: 傻蛋天天    时间: 2012-11-7 21:10
标题: 求助:关于遗传算法的问题!!!
大家请看一下这个程序:2 h3 S! Q0 @# t9 I9 \9 s
clear ;clf
. z! S( t# j' T" tpopsize=20; %群体大小 4 k, C1 Y" T$ \+ D
chromlength=10; %字符串长度(个体长度)
6 t( v) ]  {3 h6 Q) Lpc=0.6; %交叉概率 : {- K5 [8 I* J7 p8 w- E
pm=0.001; %变异概率 5 w7 w1 N- [7 Z# o( e8 L
pop=initpop(popsize,chromlength); %随机产生初始群体
. |" A) x6 d: x8 a( n$ p% ~& q! {for i=1:20 %20为迭代次数
; e4 y+ ^* c1 P5 K[objvalue]=calobjvalue(pop); %计算目标函数 3 b  k8 z4 |& A7 j% a
fitvalue=calfitvalue(objvalue); %计算群体中每个个体的适应度
# G# h5 n; v% K0 v  z; P# G[newpop]=selection(pop,fitvalue); %复制 1 u; D: X7 }" g
[newpop]=crossover(pop,pc); %交叉
( \2 H; [! p! O  @' c[newpop]=mutation(pop,pc); %变异
/ V6 a$ i/ ?, W" Z- M[bestindividual,bestfit]=best(pop,fitvalue); %求出群体中适应值最大的个体及其适应值 4 f. A% j/ E8 j  d' P% i2 [. M
y(i)=max(bestfit); / }; _* s! ~, N
n(i)=i;
. d5 _. K4 o# K7 O# ypop5=bestindividual; 2 K+ F) c- l7 Z! K' ~
x(i)=decodechrom(pop5,1,chromlength)*10/1023; ! i- ?  [5 l$ j: L4 k
pop=newpop;
: s8 A5 u; V: e* Uend
1 N4 v- A# f# u. g3 I- I# G) Lfplot('10*sin(5*x)+7*cos(4*x)',[0 10])
: S( Z. q: {8 P$ E, {1 l5 W  Thold on
$ c7 c5 o- ?' z3 D) s6 oplot(x,y,'r*')
# g" @3 ]" E9 G' khold off
1 l' o1 F1 R& s7 {0 g: ~%%%%%%%%%%%%8 f5 M2 U$ x2 N; E
这是遗传算法的主程序。我想问的是:在进行复制、交叉、变异处理时,为什么不代入新的群体矩阵newpop,而使用旧的pop呢?如果按照原程序,那么复制、交叉处理岂不是没有了任何意义?; a2 [) P' B7 y0 U6 {6 Q9 U
当我将pop改为newpop时,程序编译时就会出现错误!!!
; m: U$ Q& l- I, }2 Y 真搞不懂这到底是为什么,希望各位大侠不吝指教,谢谢!!!' w+ T  y$ L4 W4 W

2 _% i. L0 l7 `, ^0 X  M




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