数学建模社区-数学中国
标题:
求助:关于遗传算法的问题!!!
[打印本页]
作者:
傻蛋天天
时间:
2012-11-7 21:10
标题:
求助:关于遗传算法的问题!!!
大家请看一下这个程序:
* i1 C) ]) ?$ H$ W1 T
clear ;clf
! y0 }! i; o/ p
popsize=20; %群体大小
' ^* P; _ u. r
chromlength=10; %字符串长度(个体长度)
* D, k* Q* S1 C' d8 N w
pc=0.6; %交叉概率
$ p/ p1 H0 R5 y% M% @6 u @, f6 a0 D
pm=0.001; %变异概率
+ r' E6 v! D+ F3 B+ U: g, r/ ?
pop=initpop(popsize,chromlength); %随机产生初始群体
4 L) E$ o: R5 D z9 T7 c% x" O# m5 E
for i=1:20 %20为迭代次数
[1 P) e$ j9 G) `
[objvalue]=calobjvalue(pop); %计算目标函数
5 O E/ O. U/ l% [& ~9 S
fitvalue=calfitvalue(objvalue); %计算群体中每个个体的适应度
3 t( Z( b% F7 g, W* y: {
[newpop]=selection(pop,fitvalue); %复制
# f# g% Z; }. }( l6 [3 N0 k9 s' V
[newpop]=crossover(pop,pc); %交叉
8 p5 ^: I" M" ~( o7 L2 M8 _
[newpop]=mutation(pop,pc); %变异
- G: ^" p7 W" y/ \( `1 ?
[bestindividual,bestfit]=best(pop,fitvalue); %求出群体中适应值最大的个体及其适应值
+ Z" y9 p# o9 u( B+ v% N* U
y(i)=max(bestfit);
; g: N! _& w. i2 R! m2 ?
n(i)=i;
% ?0 K; N" ^9 |8 E% t
pop5=bestindividual;
2 O/ d& t- B1 W% J
x(i)=decodechrom(pop5,1,chromlength)*10/1023;
# X6 Y" R$ p" n8 ]( |3 l
pop=newpop;
d5 [( I* X9 e" e" u) P$ V4 O
end
0 _# f! D! K, s2 V3 ~. \) ?& ~* @" _& z
fplot('10*sin(5*x)+7*cos(4*x)',[0 10])
8 d m$ v7 U0 d8 E
hold on
5 b- y/ V* ?8 v! ]
plot(x,y,'r*')
% H6 _) S. L) H1 R9 N1 _3 L
hold off
S4 ?2 I2 _4 |2 d+ U
%%%%%%%%%%%%
# a" Q0 }, x$ W9 C
这是遗传算法的主程序。我想问的是:在进行复制、交叉、变异处理时,为什么不代入新的群体矩阵newpop,而使用旧的pop呢?如果按照原程序,那么复制、交叉处理岂不是没有了任何意义?
$ J( h" O" z/ q1 G |
当我将pop改为newpop时,程序编译时就会出现错误!!!
+ J9 {# \& q. g; d3 E
真搞不懂这到底是为什么,希望各位大侠不吝指教,谢谢!!!
% l1 o1 x7 d9 m0 ^1 m) i
) C; R/ `; X3 e1 R3 K
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5