数学建模社区-数学中国
标题:
求助:关于遗传算法的问题!!!
[打印本页]
作者:
傻蛋天天
时间:
2012-11-7 21:10
标题:
求助:关于遗传算法的问题!!!
大家请看一下这个程序:
1 P& x8 U8 t# z& m% d( @
clear ;clf
1 `! r, T" \, J3 c# \9 t# f; w2 v
popsize=20; %群体大小
8 S! Y- B- y% A9 l/ n
chromlength=10; %字符串长度(个体长度)
5 x; ~8 R( t7 l P
pc=0.6; %交叉概率
) s5 {. }7 }9 a9 e
pm=0.001; %变异概率
* p" F. m5 N4 |: ~9 i
pop=initpop(popsize,chromlength); %随机产生初始群体
7 c$ a: _8 L, I: ?7 t* ?
for i=1:20 %20为迭代次数
9 \& f {4 D$ G" E9 c! J; H& I3 [: M% j
[objvalue]=calobjvalue(pop); %计算目标函数
+ V( Q" h" N1 x" W
fitvalue=calfitvalue(objvalue); %计算群体中每个个体的适应度
: X( k4 s Q$ }0 r1 q
[newpop]=selection(pop,fitvalue); %复制
3 O, @" \: M" F4 Y/ @3 R' R
[newpop]=crossover(pop,pc); %交叉
8 B+ W' {3 l, g+ p
[newpop]=mutation(pop,pc); %变异
$ ^9 h) |3 R& t5 X0 Y" M# |
[bestindividual,bestfit]=best(pop,fitvalue); %求出群体中适应值最大的个体及其适应值
( n, X5 a( | l1 h7 s I
y(i)=max(bestfit);
' n# q+ y0 X4 l/ q! w# y' `5 `
n(i)=i;
% v0 B h0 b/ O
pop5=bestindividual;
3 K0 }/ o& m3 @4 Z3 k; a& Y, f
x(i)=decodechrom(pop5,1,chromlength)*10/1023;
Q9 E+ {6 z) U: D5 L2 r% `
pop=newpop;
3 G ?; u1 R2 T' g+ d0 a" T
end
0 u% l* h2 a- U' x. r1 }4 w+ Q3 w
fplot('10*sin(5*x)+7*cos(4*x)',[0 10])
) {" Z# C0 r5 o
hold on
0 ?: q& `+ G% Z) W
plot(x,y,'r*')
O/ p# a& ~! t* Z% U( Y' {
hold off
8 U R% Y& l! E
%%%%%%%%%%%%
) Q# H3 `+ l8 n
这是遗传算法的主程序。我想问的是:在进行复制、交叉、变异处理时,为什么不代入新的群体矩阵newpop,而使用旧的pop呢?如果按照原程序,那么复制、交叉处理岂不是没有了任何意义?
+ T, m+ U* E. u5 g
当我将pop改为newpop时,程序编译时就会出现错误!!!
$ @7 p* T: D. f. I. ]+ _
真搞不懂这到底是为什么,希望各位大侠不吝指教,谢谢!!!
/ H9 `: Q+ M2 A$ a+ b4 ~
! P- F$ K L5 j% O9 @; O
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5